1000瓶葯水,1瓶有毒葯,幾只小白鼠能夠找出毒葯


1000瓶葯水,1瓶有毒葯,服用后一小時毒發,毒葯可以無限稀釋,那么一小時內用幾只小白鼠能夠找出毒葯?

  假如是8瓶葯水,3只小白鼠。

  000=0
  001=1
  010=2
  011=3
  100=4
  101=5
  110=6
  111=7

  每位數表示一只老鼠,0-7表示8個瓶子。即將1,3,5,7號瓶子的葯混合取樣給鼠1吃,2,3,6,7號瓶子混合取樣給老鼠2吃……死鼠相應的位標為1。如鼠1死了,鼠2沒死,鼠3死了,那么就是101=5號瓶子有毒。N只老鼠的量程為2^N,1000只瓶子位於2^9 ~ 2^10,即10只小鼠可以測1000瓶水。

 

第二種變體:服用后一小時毒發,那么兩小時內用幾只小白鼠能夠找出毒葯?

  兩個小時就可以測試兩輪,且第一輪死了的小白鼠不能參與第二輪,可以用3進制

  0表示兩輪都不喝

  1表示第一輪喝,第二輪不喝

  2表示第一輪不喝,第二輪喝

  00=0

  01=1

  02=2

  10=3

  11=4

  12=5

  20=6

  21=7

  如果鼠1第二輪死,鼠二第一輪死,就是12=5

 

  最后推出公式為(測試次數+1)^x >= 葯水瓶數     x為白鼠數量   求x的最小整數值

 

第三種變體:有16瓶水1瓶有毒,用多少只小白鼠能測出14瓶無毒的水?

  將16瓶葯水用二進制XXXX表示,取3只小白鼠來測,測出的狀態為XXX,那么毒在XXX0或XXX1中,剩下14瓶無毒。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM