🧩 每日思维趣题 | 第 006 期:毒酒与囚徒
🧩 每日思维趣题
每天一道原创思维题 · 让大脑保持活力
📅 2026 年 4 月 8 日 · 第 006 期
📖 题目
一个国王有 1000 瓶酒,其中恰好 1 瓶被下了毒。
毒药的特性:
- 喝下后 24 小时才会发作(之前无任何症状)
- 哪怕只喝一滴,也会中毒
- 毒药不会与其他液体反应
国王有 10 个死囚可以用来试酒。
问:如何在 24 小时内确定哪一瓶酒有毒?
💡 提示
先别往下看,思考一下:
- 如果每瓶酒都单独让一个人喝,10 个人只能测 10 瓶——远远不够
- 一个人可以同时喝多瓶酒的混合样本
- 10 个囚犯能产生多少种不同的”死/活”组合?
- 1000 和 2 的什么幂次有关?
⬇️ 想好了再往下滑 ⬇️
✅ 答案
用二进制编码。
210 = 1024 > 1000,所以 10 个囚犯恰好够用。
把 1000 瓶酒编号为 1 到 1000,每个编号转成 10 位二进制数。
10 个囚犯对应二进制的 10 个位——第 i 个囚犯负责第 i 位。
规则:如果某瓶酒的编号在第 i 位是 1,就让第 i 个囚犯喝这瓶酒的样本。
24 小时后,观察哪些囚犯死了:
- 第 i 个囚犯死了 → 毒酒编号的第 i 位是 1
- 第 i 个囚犯活着 → 毒酒编号的第 i 位是 0
把 10 个囚犯的死活拼成一个二进制数,就是毒酒的编号。
📚 举例
假设毒酒是第 739 瓶。
739 的二进制是 1011100011。
| 囚犯 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|
| 二进制位 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 1 |
| 结果 | 死 | 活 | 死 | 死 | 死 | 活 | 活 | 活 | 死 | 死 |
还原:1011100011 → 739 ✓
一次测试,10 条命,1000 瓶酒,全部搞定。
🎯 思维训练要点
| 训练方向 | 说明 |
|---|---|
| 信息编码 | 二进制的本质是用最少的”是/否”问题来编码最大量的信息 |
| 组合思维 | n 个二值变量能区分 2ⁿ 种情况,这是信息论的基石 |
| 逆向设计 | 先想清楚”需要多少种结果”,再反推”需要多少个变量” |
🧠 延伸思考
- 如果国王有 2000 瓶酒呢?(答案:还是 10 个人,因为 2¹⁰ = 1024 < 2000 < 2¹¹ = 2048,需要 11 人)
- 如果毒酒可能不止一瓶呢?(比如恰好 2 瓶有毒,需要多少囚犯?)
- 现实中的新冠核酸”混检”用的就是这个思路的简化版
📅 明天同一时间,第 007 期见!
每天一道思维题,让大脑保持活力 🧠