【有趣题目】999瓶水和1瓶毒药被混淆在一起了,找出毒药?

题目:

假设在一次事故中,实验人员把1000瓶试剂里含有999瓶纯净水和1瓶毒药混淆在一起了,且毒药只能通过试用的方法才能筛选出来,且毒药发作时间很快。现有健康理想小白鼠10只、无限支试管,试设计一种方案,使得能够找到其中的毒药。

解决方案:

思 路 思路 : 1000瓶试剂,10只小白鼠,喝了试剂的小白鼠只有死和活着两种状态,让人联想到进制的用法。

方 法 方法 :将1000瓶试剂按照10bit进行二进制编号,如第一瓶是0000000000,第二瓶是0000000001,第三瓶是0000000010…以此类推,因为10bit的二进制数可以表示1024种不同的组合;再将小白鼠对应也编上号,每一只小白鼠对应10bit的各个位。当假设轮到编号是0000111010的试剂时,就将该试剂喂给从低位数起的2,4, 5, 6号小白鼠(即位是1的对应小白鼠);1000瓶喂完或者或者未喂完时,对应的x只小白鼠死亡,则将各个小白鼠的编号在0000000000的10bit编号的位置置1,则对应试剂便是毒药;若当全部试剂都喂完,均无小白鼠死亡,则0000000000就是毒药。
这个方法有点像计算机网络的OSI数据链路层差错纠正的汉明码的味道


延拓题目:

假设在一次事故中,实验人员把 2 N − a 2^N-a 2Na 瓶试剂 ( a 远 远 小 于 2 N ) (a 远远小于2^N) (a2N)里含有 2 N − a − 1 2^N-a-1 2Na1瓶纯净水和1瓶毒药混淆在一起了,且毒药只能通过试用的方法才能筛选出来,且毒药发作时间很快。现有健康理想小白鼠 N N N只、无限支试管,试设计一种方案,使得能够找到其中的毒药。

解决方案:

思 路 思路 2 N − a 2^N-a 2Na 瓶试剂, N N N只小白鼠,还是一样的原理

方 法 方法 :将 2 N − a 2^N-a 2Na 瓶试剂按照 N N Nbit进行二进制编号, 将试剂编号中,1的位置喂给对应的小白鼠,若对应的x只小白鼠死亡,则将各个小白鼠的编号在全是0的 N N Nbit编号串的位置置1,得出的那支试管便是毒药;若当全部试剂都喂完,均无小白鼠死亡,则第一瓶就是毒药。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值