共计 842 个字符,预计需要花费 3 分钟才能阅读完成。
有 1000 桶酒,其中 1 桶有毒。而一旦吃了,毒性会在 1 周后发作。现在我们用小老鼠做实验,要在 1 周后找出那桶毒酒,问最少需要多少老鼠。(老鼠越少越好,时间越快越好)
方法一:类推法
- 一只老鼠(①):
喝一剩一,最多检验 2 桶酒
① + Ο =2
- 两只老鼠(①和②):
两只老鼠各喝一桶,再一起喝另外的同一桶,最后剩下一桶都不喝,最多检验 4 桶酒
① + ② + ①② + Ο =4
- 三只老鼠(①、②、③):
三只老鼠各喝一桶,两两组合喝三桶,三个一起喝一桶,最后剩下一桶都不喝,最多检验 8 桶酒
① + ② + ③ + ①② + ①③ + ②③ + ①②③ + Ο =8
以此类推,发现规律——
每 n 只老鼠,能检验的酒桶数量满足:
$$
∑=1+n+C{_n^2}+C{_n^3}+…+C{_n^n}
$$根据 二项展开式 定理:
$$
(a+b)^n=C(n,0)a^n+C(n,1)a^{n-1}b+…+C(n,i)a^{n-i}b^i+…+C(n,n)b^n
$$上述结果等同于:2^n
所以可知当老鼠的数目 n 满足:2^n>=1000 时,能够满足条件。可得出 n >=10, 即最小为 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 桶酒有毒