算法药剂问题

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只小白鼠,在一个小时之后可以找到有毒的药剂。

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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章