1. 程式人生 > >有1000桶酒,其中1桶有毒.而一旦吃了,毒性會在1周後發作.現在我們用小老鼠做實驗,要在1周內找出那桶毒酒,問最少需要多少老鼠.

有1000桶酒,其中1桶有毒.而一旦吃了,毒性會在1周後發作.現在我們用小老鼠做實驗,要在1周內找出那桶毒酒,問最少需要多少老鼠.

選項是9只、10只、32只、999只、以上都不是.

答案:10

一隻老鼠喝酒後又兩種狀態:死(0)和活(1).
所以10只老鼠就能表示2的10次方個狀態(即1024個).2^0表示2的零次方.2^8表示2的8次方.
設有10只老鼠編號分別為2^0,2^1,2^2,2^3,2^4,2^5,2^6,2^7,2^8,2^9.有1000桶酒編號為1,2,3.一直到 1000.
任何一桶酒的編號都能分解為2的冪指數之和的形式,而且唯一.比如:第九桶酒 9= 2^0 + 2^3
(那麼我們就讓編號為2^0和 2^3的這兩隻老鼠去喝這桶酒)最後只要看哪幾只老鼠死了就知道是哪桶酒有問題.(只要把死了的老鼠編號加起來就是酒桶的編號)

比如:
如果最後死掉第三、七、八隻老鼠,那麼就是0011000100,轉換成十進位制就是196,即196桶酒有毒。
如果是第3和第10只老鼠死掉,即是:1000000100,轉換10進製為2^2+2^9=4+512=516桶酒有毒