药剂算法
发布时间: 2025-01-03 11:14:15
① 逻辑算法题(不断更新)
问:有1000瓶药剂和10只老鼠,药剂中有1瓶毒药,喝了一周内死亡(有的题目改成了五分钟,五分钟真亏他能喂完),如何在仿早一周内找到这瓶毒药。
答:将这1000瓶药剂编号0~999,并转换为二进制 就是0000000001~1111101000,从右向左开始,让第一只老鼠喝所有右起第一位编号为1的药剂,第二只老鼠喝所有右起第二位编号为1的药剂,依次类推,10只老鼠喝完10位的药剂,一周后,如果第一只老鼠死亡,那么毒药的从右起第一位为1,未死亡的话就为0,所以根据死亡状态就可以知道该瓶毒药的二进制。
例如状态是:死亡,存活,死亡,存活,存活,存活,死亡,存活,死亡,存活 = 010111010=186
从上面例银瞎子就可以知道第二种和第三种问题的解法了吧
测试时间提升为两周就说明第一周测试不死的老鼠可以拿来继续第二周的测试 ,所以老鼠的状态就变成了三种:存活(未实验),死亡,实验后存活。
将全部药剂编号后转为三进制数,老鼠右起依次喝0编号的药剂,如果死亡,那么该位编号为0,锋大空如果未死亡,那么可能为1和2,第二周把存活的老鼠继续喝该位1编号的药剂,如果死亡就为1,存活就为2,这样就找到了毒药的三进制编号,然后转换成下标即可。
总结:有 n 只小白鼠 m周的时间可以从 (m+1)^n 个瓶子中检验出毒药来。
热点内容