利用进制思想解决传统的老鼠喝毒药问题(带推广)

老鼠喝毒药问题

经典问题
    问题描述:
    有1000瓶液体中有一瓶是毒药,小鼠吞服后,立马死亡,请问至少需要几只老鼠,
    才能一次找出毒药所在。
    
    立马死亡,意味着小鼠的状态是0/1,即死亡/存活的状态,因此我们可以用0/1来
    表示小鼠的状态。将药物编号为二进制形式,发现至少需要10位数字才能表示出来
    即0000000000~1xxxxxxxxx
    设毒药为_ _ _ _ _ _ _ _ _ _
    由此可以想到,让10只小鼠,分别喝下
    xxxxxxxxx1;
    ...
    1xxxxxxxxx;
    的液体,如果某只小鼠死亡,则将该位置1,最后未置位的均为0;
    由此可得毒药编号。
问题变式
改变死亡时间
    问题描述:
    有1000瓶液体中有一瓶是毒药,小鼠吞服后,1小时后死亡,你有2小时,请问至少需要几只老鼠,才能一次找出毒药所在。
    
    1小时死亡,2小时时间,意味着小鼠的状态是0/1/2,即死亡/待定/存活的状态,因此我们可以用0/1/2来表示小鼠的状态。将药物编号为三进制形式,发现至少需要7位数字(3^7>=10)才能表示出来
    即0000000~1xxxxxx
    设毒药为_ _ _ _ _ _ _ 
    由此可以想到,让10只小鼠,分别喝下
    xxxxxx2;
    ...
    2xxxxxx;
    的液体,如果某只小鼠死亡,则将该位置2,最后未死亡的则是0/1,进入下一回合;
    
    下一回合,分别让小鼠喝下负责位为1的液体,则又返回第一个基础问题。
    由此可得毒药编号。
    
推广
    当小鼠死亡时间为t,做实验的总时间为v时,你可以操作的试验次数p=v/t;
    则,应该使用p+1进制为信息的代表格式,然后每次迭代减一个进制
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值