打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
谁能找出毒药?

今天,和一个朋友谈论了一个有趣的问题:

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


  眨看之下,貌似:”有一堆砝码,有一个不准,最少几次称量可以找出这个砝码?“

  但这问题关键是:”你只有一次验证答案的机会!“ 不管你采取什么措施,你只能揭晓答案一次。

  我是学计算机的,所以对数字比较敏感。210 = 1024!所以,我先假设有1024个瓶子,其中只有1瓶毒药。

  1. 将1024分成两个512,即512a和512b。从512a的各瓶中,各取1滴水,给1号小白鼠吃;

  2. 将两个512分别分成两个256,即,512a分成了256a、256b,并且512b也分成了256a、256b。从两个256a中,照旧每瓶取一滴,给2号小白鼠吃;

  3. 同样的道理,依次分为4个128a、128b,将a各取一滴,给3号小白鼠吃;

    8个64a、64b,将a各取一滴,给4号小白鼠吃;

    16个32a、32b,将a各取一滴,给5号小白鼠吃;

    32个16a、16b,将a各取一滴,给6号小白鼠吃;

    64个8a、8b,将a各取一滴,给7号小白鼠吃;

    128个4a、4b,将a各取一滴,给8号小白鼠吃;

    256个2a、2b,将a各取一滴,给9号小白鼠吃;

    512个1a、1b,将a各取一滴,给10号小白鼠吃;

  4. 现在,大功告成,坐等一周后的结果:

    若1死,则毒药在512a中;否则,在512b中;

      若2死,则在256a中;否则,在256b中;同时,根据1的结果,可判定这个256来自512a还是512b;

        。。。

          最后,可以唯一地确定这个”1“来自哪里,也就确定了它是第几瓶。


  若为1000瓶,则也是不断划分,划分的时候,优先满足2的整数次幂划分(如1000分为,512a和488b)。划分到后面还有点变化,有兴趣的自己探讨吧。


 

  我那同学,提出了一种更简单明了的思路:

  1. 将所有瓶子编号,1、2、3、... 、1000;

  2. 将所有编号转换成对应二进制数, 0000000001,0000000010,0000000011,...,1111101000;

  3. 给1号小白鼠吃所有二进制数最低位为1的药,如,1、3、5、7、...

    给2号小白鼠吃所有二进制数中,次低位为1的药,如,2、3、4、6、...

      。。。。

        给10号小白鼠,吃所有二进制数中,右数第10位为1的瓶子对应的药,如,512、513、514、...

  4. 最后,根据死去的小白鼠就可以推断出是哪瓶为毒药,如,第2、4、7、9个小白鼠死了,那么对应的二进制数为0101001010,即,第660瓶为毒药!


  这种问题,很可能成为IT公司的面试题。狭路相逢,我同学那种解法明显已站在了制高点。汗颜~~~

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
1000个瓶子中一瓶是毒药 问题
数学趣题:老鼠与毒药问题的推广
3116,,毒药混在8瓶药剂中,你只有3只小白鼠,怎么找出有毒的那瓶?
同样的瓶子,你为什么要装毒药呢?
智力题2
科技公司面试题之薛定谔的老鼠
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服