问题描述:有1000瓶药物,但是其中有一瓶是有毒的,小白鼠吃了一个星期以后就会死掉!请问:在一个星期内找出有毒的药物,最少需要多少只小白鼠?
答案: 10 只
思路:二进制 0 和 1 来解决,对 10 只小白鼠分别编号为 1,2,3,4,5,6,7,8,9,10。二进制映射喝法:
- 00 0000 0001 对应十进制编号第 1 瓶药水
- 00 0000 0010 对应十进制编号第 2 瓶药水
- 00 0000 0011 对应十进制编号第 3 瓶药水
- …………
- 11 1110 0111 对应十进制编号第 999 瓶药水
- 11 1110 1000对应十进制编号第 1000 瓶药水
那么,第一瓶药水喂给 10 号小白鼠,第二瓶喂给 9 号小白鼠,以此类推,第 999 瓶喂给1,2,3,4,5,8,9,10 号小白鼠,第 1000 瓶喂给 1,2,3,4,5,7 号小白鼠。
一个星期以后观察小白鼠死亡情况,如 1,2,3,5,6,号小白鼠死亡,对应二进制为 11 1011 0000,十进制编号为 944 ,那么第 944 瓶药物就是有毒的。