钢笔论坛

标题: 毒药与老鼠的问题 [打印本页]

作者: 零下one度    时间: 2012-10-26 00:25
标题: 毒药与老鼠的问题
有 1000 个一模一样的瓶子,其中有 999 瓶是普通的水,有一瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。现在,你只有 10 只小白鼠和一星期的时间,如何检验出哪个瓶子里有毒药?
作者: 零下one度    时间: 2012-10-26 00:48
网上的答案:
将10只老鼠剁成馅儿,分到1000个瓶盖中,每个瓶盖倒入适量相应瓶子的液体,置于户外,并每天补充适量相应的液体,观察一周,看哪个瓶盖中的肉馅没有腐烂或生蛆。

作者: 零下one度    时间: 2012-10-26 00:49
本帖最后由 零下one度 于 2012-10-26 00:58 编辑

另一种答案

把一千个瓶子从0开始用二进制编号,0号一直到1111100111,把十个老鼠从1到10标号,给第k只老鼠服下二进制编号中第k位为1的所有药水;一周后如果第k只老鼠死了那么有毒的药水所在的瓶子编号第k位就是1,否则为0,这样就可以确定哪个瓶子有毒了...所以理论上10只老鼠最多可以鉴别出1024个瓶子...
...
%        序号        二进制编号        十进制编号
%           1        0000000000           0
%           2        0000000001           1
%           3        0000000010           2
%           4        0000000011           3
%           5        0000000100           4
%           6        0000000101           5
%           7        0000000110           6
%           8        0000000111           7
%           9        0000001000           8
%          10        0000001001           9
%          11        0000001010          10
%          12        0000001011          11
%          13        0000001100          12
%          14        0000001101          13
%          15        0000001110          14
%          16        0000001111          15
%          17        0000010000          16
%          18        0000010001          17
作者: 大灯    时间: 2012-10-26 00:54
1. 将所有瓶子编号,1、2、3、... 、1000;
2. 将所有编号转换成对应二进制数, 0000000001,0000000010,0000000011,...,1111101000;
3. 给1号小白鼠吃所有二进制数最低位为1的药,如,1、3、5、7、...
    给2号小白鼠吃所有二进制数中,次低位为1的药,如,2、3、4、6、...
    3,4,5,6,7,8,9以此类推...
 给10号小白鼠,吃所有二进制数中,右数第10位为1的瓶子对应的药,如,512、513、514、...
4. 最后,根据死去的小白鼠就可以推断出是哪瓶为毒药,如,第2、4、7、9个小白鼠死了,那么对应的二进制数为0101001010,即,第660瓶为毒药!
作者: 大灯    时间: 2012-10-26 00:57
我拿baidu搜的!
作者: 零下one度    时间: 2012-10-26 00:59
我拿baidu搜的!
大灯 发表于 2012-10-26 00:57

我觉得想到用二进制的这个人很厉害
作者: 大灯    时间: 2012-10-26 01:07
如果是我的话,就先把瓶子编上号,然后找刑侦的朋友联系技术科,然后给技术科包个红包,请刑侦的朋友吃顿饭,三天内如果化验结果还没出来,就再补个红包给技术科……,如果到第五天还没有结果,就联系纪检委……横竖第六天都化验好了。
然后把小白鼠统统送给老伴儿当生日礼物。
作者: 零下one度    时间: 2012-10-26 01:08
如果是我的话,就先把瓶子编上号,然后找刑侦的朋友联系技术科,然后给技术科包个红包,请刑侦的朋友吃顿饭 ...
大灯 发表于 2012-10-26 01:07



   
作者: 羽暘    时间: 2012-10-26 01:18
2^10>1000,这道题可以类推,三进制四进制等等,很经典~
作者: 柳成溪    时间: 2012-10-26 07:11
编程高手都在这里集结了,招程序员的考题么?
作者: 破屋三间    时间: 2012-10-26 09:56
牛掰啊。。。。。我还是看看天气···http://www.tianqi.com走吧
作者: ilikehome    时间: 2012-10-26 12:27
显然第一个答案是正解。
作者: 青界    时间: 2012-10-26 12:45
像我这样苦逼的文科生还是选第一种吧
作者: dragonsony    时间: 2012-10-26 13:06
程序猿NB啊。。。
作者: yantaia8    时间: 2012-10-27 11:23
算不出。。。。。
作者: wangxin9903    时间: 2012-10-27 18:24
不一定要知道二进制,本质是10只老鼠有没有喝某一瓶药水的全排列,懂排列组合就行了。
二进制只是在把这个全排列实现的时候的一种具体操作方法。
类似十枚不同的硬币,抛一次有几种情况,每种情况对应一瓶药水。
作者: 旺旺爹    时间: 2012-10-29 07:16
如果是我的话,就先把瓶子编上号,然后找刑侦的朋友联系技术科,然后给技术科包个红包,请刑侦的朋友吃顿饭 ...
大灯 发表于 2012-10-26 01:07



    此方法极适合天朝国情
作者: 九命飞猫    时间: 2012-10-29 12:03
提示: 作者被禁止或删除 内容自动屏蔽
作者: xiaozuei00    时间: 2012-10-30 16:27
回复 18# 九命飞猫


    这才是正解啊···
作者: 零下one度    时间: 2012-10-30 22:34
我觉得这老鼠被毒死前 得先被水给灌死

另外 给一只老鼠喝100瓶水 即使有毒药 浓度被稀释100倍 毒性会 ...
九命飞猫 发表于 2012-10-29 12:03


有见地




欢迎光临 钢笔论坛 (http://penbbs.net/) Powered by Discuz! X3.2