世界上有10种人:一种是懂得二进制的,另一种是不懂二进制的
能看懂上面这段话的内容,说明你懂二进制(二进制10对应十进制中的2)
在解谜游戏中,有一种问题被称为"毒水问题",有7瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多少只小白鼠才能在24小时时鉴别出哪瓶水有毒?
答案是最少需要三只就可以解决。
为什么呢?
首先我们可以将7瓶水对应的编号用二进制分别列出来:
-
第一瓶水: 001
-
第二瓶水: 010
-
第三瓶水: 011
-
第四瓶水: 100
-
第五瓶水: 101
-
第六瓶水: 110
-
第七瓶水: 111
-
第一只老鼠只需要喝第一位是1的水_(100,101,110,111)_
-
第二只老鼠只需要喝第二位是1的水_(010,011,110,111)_
-
第三只老鼠只需要喝第三位是1的水_(001,011,101,111)_
这样只需要三只老鼠就可以喝到所有的水了。
接着我们可以将第一位为1的水混在一个杯子中,然后给老鼠A喝,第二位为1的水混在一个杯子中,然后给老鼠B喝,第三位为1的水混在一个杯子中,然后给老鼠C喝。
24小时候后:
-
若老鼠A,B存活,老鼠C死亡,则说明A和B都没有喝到毒水,也就是对应的0;C喝到了毒水,也就是对应的1;由此可以推导出毒水的二进制编号为001。
-
若老鼠A存活,老鼠B死亡,老鼠C存活,则说明A和B都没有喝到毒水,也就是对应的0;C喝到了毒水,也就是对应的1;由此可以推导出毒水的二进制编号为010。
-
......
以上只是针对7只老鼠喝毒水的问题,如果换成100只,1000只呢,要想列出详细的过程,手动列出是十分麻烦的,于是我写了个html页面,可以手动设置毒水的瓶数,毒水的瓶号是随机生成的,大家有兴趣的话可以试试。