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只小白鼠,小于次方1024,所以至少要10只小白鼠,在一个小时之后可以找到有毒的药剂。
也可以默认全部都是有毒的,小白鼠不喝自己编号对位的药剂,结果亦然。