我们都知道 Fe(SCN)3是血红色溶液,而品红溶液也是红色的,昊昊学长由于某些需求,他分别向 499 个空试管中滴加了品红溶液,向另外一个空试管中滴加了 Fe(SCN)3。由于滴加的过太累,昊昊去休息了但是他忘了给试管上面贴标签。雯姨来到实验室之后出于好心帮昊昊学长收拾了一下他的实验桌,重新摆放了这 500 只试管。但是当昊昊学长起来后他懵了,由于他是色盲无法通过颜色分辨两种溶液,于是他拿来了 NaOH溶液,但是氢氧化钠溶液只够用 9 次了(假设品红和氢氧化钠不反应),请你帮一下昊昊学长找出那一支 Fe(SCN)3溶液。(提示:二进制)
没有什么思路啊,对于二进制不太熟悉
2的9次方,512,超过500.折半查找
每次都折半
第一次分成250支试管一组,将第一组250支各自取样品混合成一管,加一次氢氧化钠测试,如果反应,那么Fe(SCN)3就在这一组中,反之在另一组中
第二次将有反应的250支试管再对半分,和第一次一样,判断在哪一组
....
直至最后剩两管,第9支氢氧化钠就能测试出那一管
这个应该可以帮上你
https://www.yuanheng0371.com/61815.html
#include <stdio.h>
void print_b(void *pointer, size_t size){
unsigned long data = *((unsigned long*)pointer);
int length = size*8;
int counter = 0;
printf("十进制: %lu\n", data);
printf("二进制: ");
while(length-->0){
printf("%lu", (data>>length)&0x1);
counter++;
if(counter%8==0){
printf(" ");
}
}
}
int main()
{
int x = 500;
print_b(&x, sizeof(x));
return 0;
}
二分法。2的9次方正好是512,也就是500个里面找出来,9次完全够了
将500支溶液试管再加上12支品红溶液试管混合两两一组分为512组;每组内设为n1和n2号试管(n为编号,从1至256),分别取适量相混合,得到256支新溶液试管。以此类推,可以得到128支新溶液试管、64支、32支、16支、8支、4支、2支。逆推滴加9次NaOH溶液进行确定即可。