🧩 每日思维趣题 | 第 009 期:毒酒与老鼠
🧩 每日思维趣题
每天一道原创思维题 · 让大脑保持活力
📅 2026 年 4 月 11 日 · 第 009 期
📖 题目
国王的酒窖里有 1000 瓶酒。
大臣偷偷告诉国王:其中一瓶被下了毒。
毒药无色无味,但毒性极强——只要喝下一滴,24 小时后必死无疑。
国王决定用老鼠来试毒。
他有 10 只老鼠,每只老鼠可以喝多瓶酒的混合样本。
24 小时后观察哪些老鼠死亡,就可以推断出哪瓶酒有毒。
问:10 只老鼠真的够吗?如果够,应该怎么安排?
💡 提示
先别往下看,思考一下:
- 如果用最笨的方法——一只老鼠试一瓶,10 只老鼠只能测 10 瓶。1000 瓶显然不够。
- 10 只老鼠,每只只有”死/活”两种状态,一共能区分多少种组合?
- 1000 和 2 的什么幂次接近?
⬇️ 想好了再往下滑 ⬇️
✅ 答案
够。10 只老鼠正好能区分 1024 瓶酒。
关键思想:二进制编码。
操作步骤:
- 把 1000 瓶酒编号为 1 到 1000
- 把每瓶酒的编号写成10 位二进制数(比如第 5 瓶 = 0000000101)
- 10 只老鼠对应 10 个二进制位(第 1 只 = 最低位,第 10 只 = 最高位)
- 如果第 n 瓶酒的第 k 位是 1,就让第 k 只老鼠喝第 n 瓶酒
- 24 小时后,记录每只老鼠的死活(死=1,活=0)
- 把结果拼成一个二进制数 → 就是毒酒的编号
📚 解析
举个具体例子。假设只有 8 瓶酒和 3 只老鼠(2³ = 8):
| 酒编号 | 二进制 | 老鼠A(第一位) | 老鼠B(第二位) | 老鼠C(第三位) |
|---|---|---|---|---|
| 1 | 001 | ✓ 喝 | — | — |
| 2 | 010 | — | ✓ 喝 | — |
| 3 | 011 | ✓ 喝 | ✓ 喝 | — |
| 4 | 100 | — | — | ✓ 喝 |
| 5 | 101 | ✓ 喝 | — | ✓ 喝 |
| 6 | 110 | — | ✓ 喝 | ✓ 喝 |
| 7 | 111 | ✓ 喝 | ✓ 喝 | ✓ 喝 |
| 8 | 000 | — | — | — |
24 小时后:
- 如果只有老鼠 A 死了 → 结果是 001 → 第 1 瓶有毒
- 如果老鼠 A 和 C 死了 → 结果是 101 → 第 5 瓶有毒
- 如果全活 → 第 8 瓶有毒(没有老鼠喝它)
扩展到 1000 瓶:2¹⁰ = 1024 > 1000,所以 10 只老鼠正好够用。
🎯 思维训练要点
| 训练方向 | 说明 |
|---|---|
| 信息编码 | 每只老鼠的死活提供 1 比特信息,10 只老鼠提供 10 比特 = 1024 种可能 |
| 从”一对一”到”组合” | 不是”一只老鼠测一瓶”,而是”每只老鼠参与多瓶的测试”,通过组合获取信息 |
| 二进制思维 | 这道题的本质是把十进制编号转化为二进制,用老鼠当”位” |
🧠 延伸思考
- 如果国王有 2000 瓶酒,需要几只老鼠?(2¹¹ = 2048 > 2000,需要 11 只)
- 如果老鼠喝了毒酒后 1 小时就死(而不是 24 小时),能不能进一步减少老鼠数量?(可以分时段测试——但需要更复杂的时间编码方案)
- 这个方法在计算机科学中有个名字:分组测试(Group Testing),广泛用于医学筛查、基因检测、质量控制
- 现实应用:COVID-19 核酸检测中的”混检”,用的就是类似的思路——把多个样本混合检测,减少检测次数
📅 明天同一时间,第 010 期见!
每天一道思维题,让大脑保持活力 🧠