实验概述
你有1000个瓶子,其中有1瓶是毒药,其他999瓶是水,且毒药的形态和水一样,从外观上与水没有差异。小白鼠喝了毒药以后会在一周后死亡。现在你有10只小白鼠,和一周的时间,试问如何在一周的时间里找出这瓶毒药。
分析
由于小白鼠只有10只,不可能简单的让每只小白鼠都喝这1000个瓶子里的液体,所以我们需要想办法让这10只小白鼠和1000个瓶子产生联系。
解答
将1000个瓶子编号为1~1000,2的10次方为1024>1000,所以能想到用二进制方法来表示。
瓶子编号 | 小白鼠排列 |
---|---|
1 | 0000000001 |
2 | 0000000010 |
3 | 0000000011 |
··· | ··· |
888 | 1101111000 |
··· | ··· |
1000 | 1111101000 |
如上列表所示,将小白鼠依次编号,从左往右依次是第10只、第9只···第1只。接下来给小白鼠按列表喝瓶子里的水,例如第一瓶给第一只喝,第二瓶给第二只喝,第三瓶给第一只以及第二只喝······第888瓶给第10、9、7、6、5、4只喝。一周以后,由于小白鼠喝了毒药会死亡,所以根据最后的小白鼠的存活情况可以确定哪一瓶是毒药。