微博里很热的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

相关文章推荐

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

http://www.cnblogs.com/zhaoxiaolei/archive/2012/03/27/2419163.html

有1000个一模一样的瓶子,其中有999瓶是普通的水,有一瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。现在,你只有10只小白鼠和一星期的时间,如何检验出那个瓶子里有毒药?

关于1000瓶水中有一瓶是毒药问题的思路与用Java代码具体实现方案 1,原题     有1000个一模一样的瓶子,其中有999瓶是普通的水,有一瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。现在...

[转载]小白鼠喝药水找毒药——面试题

本文转自 原博客地址 题目:1000 瓶无色无味的药水,其中有一瓶毒药,10只小白鼠拿过来做实验。喝了无毒的药水第二天没事儿,喝了有毒的药水后第二天会死亡。如何在一天之内(第二天)找出这瓶有毒的药水?...

用小白鼠鉴别有毒药水问题

http://www.cnblogs.com/mingmingruyuedlut/archive/2011/10/14/2211237.html 题设:有N瓶水,其中有一瓶水有剧毒,如果...

小白鼠与毒药解题过程分析

小白鼠与毒药问题详细分析过程,原题如下: 我们有很多瓶无色的液体,其中有一瓶是毒药,其它都是蒸馏水,实验的小白鼠喝了以后会在5分钟后死亡,而喝到蒸馏水的小白鼠则一切正常。现在有5只小白鼠,请问一下,我...

剑指Offer之淘宝面试题之小白鼠与毒药解题过程分析

网上流传着一题淘宝面试题,原题如下: 我们有很多瓶无色的液体,其中有一瓶是毒药,其它都是蒸馏水,实验的小白鼠喝了以后会在5分钟后死亡,而喝到蒸馏水的小白鼠则一切正常。现在有5只小白鼠,请问一下,...

小白鼠问题C语言代码

  • 2013年08月28日 14:14
  • 296KB
  • 下载

小白鼠问题

小白鼠问题 问题描述:有 1000 个一模一样的瓶子,其中有 999 瓶是普通的水,有一瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。问,在一星期时间内,如何用最少的白鼠试验出有毒的那瓶?...

问题 G: 小白鼠排队

题目描述 N只小白鼠(1 输入 多案例输入,每个案例的输入第一行为一个整数N,表示小白鼠的数目。 下面有N行,每行是一只白鼠的信息。第一个为不大于100的正整...

小白鼠喝毒水的问题

算法 老鼠喝水
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:微博里很热的1000瓶子10小白鼠找毒药问题
举报原因:
原因补充:

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