题目
有 1000 瓶药物,但是其中有一瓶是有毒的,老鼠只要服用任意量有毒药水就会在一个星期内死掉!请问,在一个星期后找出有毒的药物,最少需要多少只小白鼠?
tip:
- 小鼠可以多次喝药水
- 涉及对bit位的灵活运用(正确解题)
解答
先对药物进行编号1-1000
因为1000<2^10=1024,将编号转换成2进制
1000瓶全都编号完则需要10个比特位,每个比特位对应一只编号小鼠
如果是1,则对应的比特位的小鼠喝药品,为0则对应小鼠不喝药品
如下:
1 -> 00000 00001 ->1号鼠
2 -> 00000 00010 ->2号鼠
...
5 -> 00000 00101 ->3,1号鼠
...
1000->11111 01000->4、6、7、8、9、10号鼠
如果一星期后是4,6,7,8,9,10号鼠死掉,则对应的1000号药物有毒
答:最少需要10只小鼠