有1000桶酒,其中1桶有毒.而一旦吃了,毒性会在1周后发作.现在我们用小老鼠做实验,要在1周内找出那桶毒酒,问最少需要多少老鼠.

来源:互联网 发布:数据精灵不能添加账号 编辑:程序博客网 时间:2024/04/30 05:56

选项是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的这两只老鼠去喝这桶酒)最后只要看哪几只老鼠死了就知道是哪桶酒有问题.(只要把死了的老鼠编号加起来就是酒桶的编号)

比如:第70桶酒,70转换成二进制就是0001000110,那么就给第四、八、九只老鼠喝。如果最后死掉第三、七、八只老鼠,那么就是0010001100,转换成十进制就是140,即140桶酒有毒。如果是第3和第10只老鼠死掉,即是:0010000001,转换10进制为2^2+2^9=4+512=516桶酒有毒

0 0