1000瓶水,1瓶有毒药,几只小白鼠能够找出
有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多少只小白鼠才能在24小时时鉴别出那瓶水有毒?
这道题考察的是对2进制的理解。
我们可以先理解简单一点的,先算假如只有4瓶其中一瓶有毒。
我们可以通过逻辑,A、B、C、D四瓶水
第一只喝:A、B
第二只喝:B、C
这时候就会出现四种情况
都活:说明D水有毒
一死:说明A有毒
二死:说明C有毒
都死:说明B有毒
这时得知2只小白鼠够了。
二进制
通过二进制方式:4 = 0100 去掉前面得0还有三位 所以二进制得出需要三只去喝,因为我们是通过逻辑得出最少两只有一只没喝,都喝的话是需要3只得。
1000瓶
二进制换算:1000 = 0011 1110 1000 去掉前面无效0还有10位,所以需要10只小白鼠。
将所有水二进制换算
这10只小白鼠我们这样分配:
第一只喝水二进制换算后第一位是1得
第二只喝水二进制换算后第二位是1得
~
第十只喝水二进制换算后第十位是1得
1000统计起来太麻烦了。
例:10瓶
1~10二进制结果
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|
0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 |
统计
10 = 1010 = 4只
小白(喝个位是1的):1、3、5、7、9
小黑(喝十位是1的):2、3、6、7、10
小绿(喝百位是1的):4、5、6、7
小黄(喝千位是1的):8、9、10
假如:小白小黑GG了,小白鼠从左到右排队G了打1没G打0->千(0) 百(0) 十(1) 个(1)
结果:0011 二进制转十进制 3。
其实肉眼也可以看出来哈7号小绿喝了也没G那肯定是3了。