老鼠和毒药
题目:有1000个一模一样的瓶子,其中999瓶是普通的水,有1瓶是毒药。任何喝下毒药的生物都会在一星期以内死亡。现在,你只有10只小白鼠和一星期的时间,如何检验出哪个瓶子里有毒药?
解法:
我们知道2的10次放等于1024,那么通过把瓶子编成二进制,同时把老鼠变成二进制的位值就可以分辨到底哪瓶水是毒药
1.把所有的瓶子编成1-1000的二进制,那么就是0000000001到1111101000
2.把老鼠分辨编成1-10号,分别对应二进制的第1位,第2位.....第10位
3.根据每瓶水的二进制代码给老鼠喝水,该位值为1就给该位值的老鼠喝,为0就不喝,比如,0000000001就只给1号老鼠喝,0010010011,就给1号,2号,5号,8号老鼠喝
4.1星期后,看哪些老鼠死了,然后死的老鼠位为1,没死的老鼠位为0,组成二进制数,该数对应的瓶子编号就是有毒的编号
这个解法把二进制和十进制的转换用到极致,是一道有意思的题。