算法药剂问题

1000瓶药剂,其中一瓶有毒,喝了立即死亡,小白鼠实验那一瓶有毒?

喝了立即死亡,一只小白鼠从1号喝到底,喝到哪儿死,哪儿有毒,简单。

1000瓶药剂,其中一瓶有毒,毒性一个小时发作。要在一个小时之后,找出哪一瓶有毒?

找来999只小白鼠,一只一瓶也不用抢,一小时之后那只死了对应喝的那瓶有毒,简单。

增加要求,最少多少只小白鼠,一个小时之后,可以找出有毒的药剂?

药剂有毒/无毒,二进制,0和1的问题,假设0是五毒,1是有毒。

举个例子:10瓶药剂,其中1瓶有毒,1小时毒性发作,至少需要多少小白鼠1小时之后找出有毒的药剂?

把瓶子的序号转换成二进制,10<16,也就是要4只小白鼠,2*2*2*2,分别取为abcd。

开始试验:

默认全部都是无毒的,小白鼠喝完之后状态应该是0000。每只小白鼠都要喝自己对位编号为1的药剂。

白鼠a喝8、9、10号药剂

白鼠b喝4、5、6、7号药剂

白鼠c喝2、3、6、7、10号药剂

白鼠d喝1、3、5、7、9号药剂

数据推演验证结果:

如果1号有毒,白鼠(abcd)死亡情况就是0001,转换成二进制就是1号;

如果2号有毒,白鼠(abcd)死亡情况就是0010,转换成二进制就是2号;

如果3号有毒,白鼠(abcd)死亡情况就是0011,转换成二进制就是3号;

......

如果8号有毒,白鼠(abcd)死亡情况就是1000,转换成二进制就是8号;

如果9号有毒,白鼠(abcd)死亡情况就是1001,转换成二进制就是9号;

如果10号有毒,白鼠(abcd)死亡情况就是1010,转换成二进制就是10号;

推演论证:

1000只小白鼠,小于2^{10}次方1024,所以至少要10只小白鼠,在一个小时之后可以找到有毒的药剂。

也可以默认全部都是有毒的,小白鼠不喝自己编号对位的药剂,结果亦然。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值