有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桶酒有毒

posted @ 2016-02-27 14:56  Bug开发攻城狮  阅读(2085)  评论(0编辑  收藏  举报