题目:有1000瓶水,其中一瓶水是有毒的,喝下后24小时后才会死,现在用小白鼠来测试哪一瓶水有毒,至少需要用多少只小白鼠才能测出哪一瓶是有毒的水(需要24小时后,立马出结果)
答案:10位二进制数可表示1024个数字>1000
10位二进制数字,相当于10个位置,
把10只老鼠放到如下10个位置上
把10只老鼠编成如下编号:
编号 :0000000001 第1只老鼠编号
编号 :0000000010 第2只老鼠编号
编号 :0000000100 第3只老鼠编号
编号 :0000001000 第4只老鼠编号
编号 :0000010000 第5只老鼠编号
编号 :0000100000 第6只老鼠编号
编号 :0001000000 第7只老鼠编号
编号 :0010000000 第8只老鼠编号
编号 :0100000000 第9只老鼠编号
编号 :1000000000 第10只老鼠编号
因为这10只老鼠的编号组合起来可以代表1024个数字,
所以 可以把1000瓶水,用上面的10只老鼠的编号来组合:
比如:从右往左看
1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 |
相当于:站队的有第3只老鼠,第6只老鼠 ,第10只老鼠,这样就代表了一个瓶子的编号。
1000瓶水,相当于有1000个这样二进制的对应编号,都有对应的老鼠去组合编号。
假如:下面编号的水有毒:
0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |
那就有第2只老鼠,第4只老鼠,第6只老鼠,第8只老鼠,第9只老鼠去喝这个编号有毒的水,
喝以后,24小时后这个编号位置上站的老鼠就会死亡,把编列组合的编号换算成10进制数就得到有毒水的编号:(左边为高位,右边为低位)
=256+128+32+8+4
=384
则编号为384号的水有毒。