小白鼠试药的答案
1、我们有很多瓶无色的液体,其中有一瓶是毒药,其它都是蒸馏水,实验的小白鼠喝了以后会在5分钟后死亡,而喝到蒸馏水的小白鼠则一切正常。现在有5只小白鼠,请问一下,我们用这五只小白鼠,5分钟的时间,能够检测多少瓶液体的成分()
a 5瓶 b 6 c 31 d 32
答案是 32,下面给出程序实现的一般推论
- C/C++ code
# include <stdio.h># include <math.h>int at_apnot;int max;int main(int argc, char **argv){ int mid; int mouse_count; printf("输入老鼠个数为:"); scanf("%d", &mouse_count); max = (int)pow(2, (double)mouse_count); for (mid = 1; mid <= mouse_count; mid++) { printf("老鼠 %d 喝:", mid); for (at_apnot = 1; at_apnot < max; at_apnot++) { if (at_apnot & (0x1 << (mid - 1))) printf(" %d\t", at_apnot); } putchar('\n'); } getchar(); return 0;}[解决办法]
楼主威武,楼主散分。。。
[解决办法]
学习~
[解决办法]
其实跟 5个手指能表示多少数 问题是一样的
能正推又能反推回来就行了
[解决办法]
楼主讨论的2进制的问题可以这么解决,那3进制的呢?
那请问天平验硬币问题,N快硬币,里面有且仅有一个赝品,用天平称5次可以得出两个结论:一个是找出哪个是赝品,一个是赝品比真品轻还是比真品重.这里N最大可以取多少?
4进制的呢......
请教..
[解决办法]
嘿嘿,学习!
[解决办法]
[解决办法]
[解决办法]
你难道没注意你题目“我们有很多瓶无色的液体”,请问31个瓶子喝了都没死,还剩下很多-31个瓶子,哪个有毒
[解决办法]
数学问题,2^5=32,根本不用编程来求。
[解决办法]
LZ逻辑有问题吧,你的“ 32瓶最少有多少老鼠检查出来。 32瓶中其中有一瓶是毒药,其它都是蒸馏水
”和题目已经不一样了
无数的瓶子N个老鼠只能鉴定2的N次方-1 (LZ原题)
而2的N次方个瓶子只用N只老鼠 (LZ后面怎么就变成是32只了)
请看原题,要么不纠结了,又没说你后面解释是错的
[解决办法]
此类问题论坛已出现过。嘿嘿
[解决办法]
仔细读题目就会发现,问题问的是5只小白鼠一次可以从“很多个”瓶子中检测出的瓶子的数量,而不是5只小白鼠可以检测出的瓶子数量。
也就是说,一个是:拿着这5只小白鼠去检测那堆瓶子,确定瓶子是否有毒,你至少能检测出多少个瓶子?
另一个是:给你5只小白鼠,你可以检测出多少个其中有且只有一个有毒的瓶子?
另外一点,假设那堆瓶子数量为100个,那么5只老鼠最少可以检测出31瓶,最多可以检测出100瓶(全部检出)。因为如果31瓶中有一瓶是毒药,那么剩下的69瓶也可以确定是水无疑了。
因此既然答案是不确定的,那么这个问题就显得不太严谨了,应该问最少可以检测出多少瓶,此时答案是31。
下面附上原题,方便对照:
我们有很多瓶无色的液体,其中有一瓶是毒药,其它都是蒸馏水,实验的小白鼠喝了以后会在5分钟后死亡,而喝到蒸馏水的小白鼠则一切正常。现在有5只小白鼠,请问一下,我们用这五只小白鼠,5分钟的时间,能够检测多少瓶液体的成分()
[解决办法]
精辟~~
[解决办法]
学习了……
------解决方案--------------------
不明白为什么所有的都要喝,有一个喝了没事,,不就知道不是毒药了吗.