问题描述
有 1000 瓶药水,但是其中有一瓶是有毒的,小白鼠只要喝了任意剂量的药水,24小时内就会死掉!请问,要在24小时内找出有毒的药水,最少需要多少只小白鼠?
解答
至少需要10只。
分析
1、因为2^10=1024>1000,把1000瓶药水从1开始,从小到大按顺序编号,到1000结束,并且编号用二进制表示,10只小白鼠也从1,2,3…10按顺序编号。
2、每瓶药水二进制位上,哪一位的数为1,则给对应编号的小白鼠喝这瓶药水。例如:
00 0000 0001---------------第1瓶药水,给编号1的小白鼠喝
00 0000 1110---------------第14瓶药水,给编号2,3,4的小白鼠喝
11 1110 1000----------------第1000瓶药水,给编号4,6,7,8,9,10的小白鼠喝
3、24小时内,观察有哪些小白鼠死掉,其编号对应的二进制位设为1,没有死的小白鼠,它们的编号对应的二进制位设为0,构成一个二进制位数,该数表示的编号对应的药水就是有毒的药水。
例如:1,2,3,4号小白鼠都死了,其它小白鼠存活,则构成的二进制数是00 0000 1111,为编号15,编号15的药水有毒。
原理:只要喝过有毒的药水,小白鼠都会死亡,根据死亡的小白鼠和存活的小白鼠对应的编号,构成一个二进制数,得出结果。
注意:允许一只小白鼠喝多瓶药水。