有一千瓶水,其中有一瓶是有毒的,老鼠喝了毒的水会在七天后死亡,请问需要几只老鼠才能找出有毒的那瓶水?

思路:

使用二进制的格式来给每瓶水做标记,

第一瓶水:0000000001
第二瓶水:0000000010
第三瓶水:0000000011
.
.
.
第1000瓶水:1111101000

然后可以看出1000瓶水需要二进制数的位数为10位,所以找10只小白鼠,第一只小白鼠只和二进制数第一位为1的水,第二支小白鼠喝二进制数第二位为1的水,以此类推,第10只小白鼠喝二进制数第10位为1的水。

假如7天后1,3,5三只小白鼠死了,所以二进制数为1010100000,转换为10进制数为29+27+2^5=672

所以需要10只小白鼠就可以,此类问题既需要用二进制表表示最大数就可以了,比如1000瓶水,210是1024,因为需要10只老鼠,100瓶水,27是128,所以需要7只老鼠

posted @ 2019-07-10 15:25  爱热闹的杨小厨  阅读(2601)  评论(0编辑  收藏  举报