【面經】小白鼠喝水問題
阿新 • • 發佈:2020-11-03
10000瓶水,其中一瓶有毒,小白鼠喝後12小時才會有反應,問在12小時內需要最少多少隻小白鼠能知道哪瓶水有毒。
答案
:\(log_2{10000}=14\)
解析
:本質是讓一隻小白鼠儘可能多得喝(這樣可以用更少的小白鼠)同時還能夠簡單的找到是哪杯水有毒。
-
第一步
給10000個瓶分別標上如下標籤(14位長度)
00000000000001 (第1瓶) 00000000000010 (第2瓶) 00000000000011 (第3瓶) ...... 10011100010000 (第10000瓶)
-
第二步
從編號
最後一位
是1的所有瓶子裡面取出1滴混在一起(比如從第一瓶,第三瓶,。。。,裡分別取出一滴混在一起)並標上記號為1。從編號
倒數第二位
為1的所有瓶子裡取出1滴混在一起(比如從第二瓶,第三瓶,。。。,裡分別取出一滴混在一起)並標上幾號位2。以此類推。。。
從編號
第一位
是1的所有的瓶子裡面取出1滴混在一起並標上記號為14。 -
第三步
小白鼠排排站,分別標上14,13,。。。1號,並分別給它們灌上對應號碼的混合液。24小時過去了,過來驗屍吧:
-
第四步
從左到右,死了的小白鼠貼上標籤1,沒死的貼上0,最後得到一個序號,把這個序號換成10進位制的數字,就是有毒的那瓶水的編號。