用小白鼠找毒药
有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 次方个瓶子中检验出毒药来。