用小白鼠找毒药

 有1000个一模一样的瓶子,其中有999个装的是普通的水,有一瓶装的是无色无味的毒药;这瓶毒药在小白鼠喝完之后一周就会发作死亡;你有10只小白鼠和一周的时间。请问如何找到这瓶毒药?

解答:10只老鼠,刚刚好2的10次方等于1024,是大于1000的。也就是说,可以用10只老鼠的生死(生死可以用1、0表示)来确定1000以内的任何一个数字。

具体思路:把1000个瓶子可以按二进制数排序,是1的位就让对应的老鼠去喝,0则不喝。老鼠也可以排个号,从m1,m2到m10,假如编号为0010101100(172)这瓶水有毒,m3,m5,m7,m8老鼠喝了这瓶水,也就是说可以通过这四只老鼠死了,其余的老鼠没死,确定这瓶水有毒。

          m1 m2 m3 m4 m5 m6 m7 m8 m9 m10

1         0   0     0    0    0    0    0    0    0     1

2         0    0    0    0    0    0    0    0    1     0

172     0    0    1    0    1    0    1    1    0     0  

 

结论:n 只小白鼠 t 周的时间可以从 (t+1)的n 次方个瓶子中检验出毒药来。

posted @ 2019-11-07 17:33  hoo_o  阅读(451)  评论(0编辑  收藏  举报