微博里很热的1000瓶子10小白鼠找毒药问题

转载 2013年08月10日 17:12:00
有 1000 个一模一样的瓶子,其中有 999 瓶是普通的水,有一瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。现在,你只有 10 只小白鼠和一星期的时间,如何检验出哪个瓶子里有毒药?

原帖地址:

http://www.zhihu.com/question/19676641

提示:使用伟大的二进制

从1000个瓶子跟10个老鼠这里直觉就是会跟2的10次方有关系
也学是学计算机的对二进制比较熟悉吧
联想到要用10这个数字来构造1000种可能而 2的10次方=1024>1000
而且每条老鼠的结果就两种可能被毒死而没被毒死
这个问题就把十个老鼠当作十个二进制的位,十位二进制能表示的数字个数是1024个,所以即使瓶子数量是1024也是可以找出来结果的,具体办法就是把一千个瓶子标上序号(先拿出来一瓶,剩下的瓶子从1开始编号),假设 是编号为n的有毒 比如n是 512那么 写成二进制就是1000000000,现在让你找这个序号是多少,相当于让你确定这个十位的二进制数每一位的数字是什么(此时你并不知道是512),so 我们先来确定第一位,我们使用正向确定法,就是确定这位是不是1(反向推测就是确定这位是不是0),怎么确定呢,我们先找到这一位是1的所有的数值,然后把这些数值对应的瓶子里面的液体取出来混合,(此时一就是512一直到99)让第一个老鼠喝掉,然后第二位,第三位.....依次类推到最后一位。最后十个老鼠都喝了瓶子的液体,一周后,哪个老鼠死了那一位就是1,得到一个十位的二进制数字,转换成十进制就搞定了,比如我们之前举的例子是编号512这瓶,那么肯定就是只有第一个老鼠死了,得到结果是1000000000

(如果任何老鼠都没有死即结果是0000000000 ,就是说明我们拿出来的那瓶是毒药)



附上1000苹果问题的一点解答的想法


题目】 1000个苹果放入10个箱子。客户如果要获得1~1000个苹果中的任意个数,都可以整箱搬,而不用拆开箱子。问是否有这样的装箱方法?
你说的1000苹果是这个问题吧?


这个题目直观多了
其实这个跟我们学的那个什么信息安全里面的某些问题到时有异曲同工之妙,也跟之前那个金条分三段发七天工资的问题差不多 
这个相对于找毒药问题比较简单,首先即使你不懂也能有思路,首先1肯定得有因为它不可能得于任何自然数的和之后你发现2也不能如果你分两个箱子为1岂不是很浪费so 你有了1 2 你就有了 3 so 你应该发现点规律了吧 不行的话你继续 分一个4 1 2 4 你能组合小于8的任何数 
so 你应该明白了吧 其实 1 2 4 8 16 这种数是可以构造任意数值的 因为 你首先知道 二进制 是可以表示任何整数的 
二进制每一位都是对应前面的1 2 4 8 所以你有了1 2 4 8 16 就相当于 你有了 这几位的二进制 当客户提出一个整数的时候你就把他转化成 
二进制比如客户想要127个 也就是 1111111 那你就取 1 2 4 8 16 32 64的箱子给他 就行了


原文地址:http://bbs.pediy.com/showthread.php?t=148657

知名技术作家孟岩与张永强

  • foxfly
  • foxfly
  • 2004-04-17 12:05:00
  • 653

对计算机bit的强大的理解力: 用10只小白鼠查找1000瓶药中有毒的那一瓶(只有一瓶)

无意中看到一个博客地址如下,  http://blog.csdn.net/limenghua9112/article/details/44724389 有意思: 前两天参加面试,CEO给我出了一道题...
  • a130737
  • a130737
  • 2015-03-29 13:20:08
  • 1919

如何用10只实验鼠检测出1000个药瓶中哪个有毒药?

转自:http://blog.csdn.net/u012027907/article/details/12296473 当我第一次看到这个面试题的时候,也不知道从何处下手,但在别人的提示下,...
  • u011588304
  • u011588304
  • 2016-04-05 14:50:39
  • 1390

试题: 小白鼠问题

刚看到这个帖子:C++编程,小白鼠问题,开始没有什么思路,刚躺下,想到了。。。 原题: 有一家生化所,一月份引入一对新生的小白鼠。这对小白鼠生长两个月后,在第三、第四、第五个月各繁殖一对新小白...
  • ken_scott
  • ken_scott
  • 2012-04-19 03:08:24
  • 807

位运算的优点和小白鼠面试题

优点可以从小白鼠面试题看出来有 1000 个一模一样的瓶子,其中有 999 瓶是普通的水,有一瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。现在,你只有 10 只小白鼠和一星期的时间,如何检验出哪...
  • qq_36523667
  • qq_36523667
  • 2018-02-13 18:57:48
  • 90

1000瓶液体10只小白鼠面试题答案

有1000瓶液体(正常,无毒),但是由于工作人员失误,将毒药滴到了其中一瓶中,从外观和气味上完全无法分辨出那一个是被污染过的,我们只知道这个毒药的毒发期是7天,实验室有10只小白鼠,只有7天的时间,如...
  • xiaojimanman
  • xiaojimanman
  • 2015-05-22 15:41:15
  • 3467

小白鼠算法

有 1000 个一模一样的瓶子,其中有 999 瓶是普通的水,有一瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。现在,你只有 10 只小白鼠和一星期的时间,如何检验出哪个瓶子里有毒药? ...
  • gexiaobaoHelloWorld
  • gexiaobaoHelloWorld
  • 2012-03-27 20:24:18
  • 1793

小白鼠试药问题

题目如下: 实验室里有1000个一模一样的瓶子,但是其中的一瓶有毒。可以用实验室的小白鼠来测试哪一瓶是毒药。如果小白鼠喝掉毒药的话,会在一个星期的时候死去,其他瓶子里的药水没有任何副作用。请问最少用...
  • zhu418766417
  • zhu418766417
  • 2015-08-03 14:56:44
  • 943

需要多少只小白鼠才能在24小时内找到毒药

问题: 有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多少只小白鼠才能在24小时时鉴别出那瓶水有毒? 答案: 最容易想到的就是用1000只小白鼠,每只喝一...
  • nengyu
  • nengyu
  • 2012-05-22 12:05:33
  • 3070

1000瓶药中找出一瓶毒药,10只老鼠做试验

题目如下:现有1000瓶药,其中有一瓶毒药,喝了之后1小时后才产生效果,现在你有10只老鼠和1个小时的时间,请问怎么找出毒药? 题解:这道题明显就是只能一开始就把所有药都喂给10只老鼠,1小时后就直接...
  • Limitless1113
  • Limitless1113
  • 2015-06-29 14:30:51
  • 5256
收藏助手
不良信息举报
您举报文章:微博里很热的1000瓶子10小白鼠找毒药问题
举报原因:
原因补充:

(最多只允许输入30个字)