一道有意思的二進制用法的題目

問題闡述:
有1000桶酒,其中1桶有毒.而一旦吃了,毒性會在1周後發作.現在我們用小老鼠做實驗,要在1周內找出那桶毒酒,問最少需要多少老鼠.
理解並且解題目:
1.先理解:你可以用1000只老鼠去分別嘗試每隻桶,最後看看哪個死了,對應的就是那個桶;
上面的是1只老鼠對應1個桶去喝酒,我們爲什麼不可以用多隻老鼠去嘗試多隻桶呢?
所以就出來了問題的最優解答案:
1.1000只桶分別編號,對應1–1000,用二進制表示他們每隻桶,僅需要10位就可以。
2. 一隻老鼠喝酒後有兩種狀態:死(0)和活(1).
所以10只老鼠就能表示2的10次方個狀態(即1024個).2^0表示2的零次方.2^8表示2的8次方.
然後給老鼠編號:1-10每隻老鼠對應2^0,2^1……2^9.
3.每隻桶的二進制表示法中,讓其位爲1所對應的老鼠去喝他。
比如:第九桶酒 9=1001= 2^0 + 2^3,就讓對應的第1只和第4只老鼠去喝他;
然後遍歷完這1000個桶,最後看哪幾只老鼠死了,對應的二進制數轉化成10進制數就是答案;
如果最後死掉第三、七、八隻老鼠,那麼就是0011000100,2^2+2^6+2^7轉換成十進制就是196,即196桶酒有毒。

     ===========================
     任何數字都都可以用二進制表示!
發佈了72 篇原創文章 · 獲贊 15 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章