∫π每天一道数学题
← 返回算法统宗
算法统宗 · 第 4 讲 · 2026-10-28" · 约 12 分钟

李白打酒——不定方程的经典

遇店加一倍,见花喝一斗。三遇店和花,喝光壶中酒。一道题,引出逆向推理的无穷魅力。

原典

今有大人小儿共四十二人,一人须三穗,一人须一穗,问大人、小儿各几人?

——《算法统宗》卷五·盈不足

今有李白街上走,提壶去买酒。遇店加一倍,见花喝一斗。三遇店和花,喝光壶中酒。试问:壶中原有多少酒?

——《算法统宗》卷七·言古代数

这道题说的是什么

李白提着空壶去买酒,每遇到一家店,壶中的酒就翻倍;每看到一朵花,就喝掉一斗。他这样"遇店又遇花"重复了三次,最后壶正好空了。问:壶里原来有多少酒?

这道题看似简单,却蕴含了逆向推理的核心思想——从结果倒推原因。

示意图

李白打酒示意图

三遇店和花:每次先遇店翻倍,再遇花喝一斗,三次后壶空。

逆向推理:从终点往回走

正向思考很困难——我们不知道初始量,却要预测三次操作后的结果。但逆向思考就简单了:

已知最终状态:0 斗。问:操作前三次,每次之前有多少?

设壶中原有酒 xx 斗。

第三次遇花后为 0,说明第三次遇花前有 1 斗(喝掉 1 斗后变 0)。

而第三次遇花前的 1 斗,是第三次遇店翻倍的结果,所以第三次遇店前有:

12 斗(1)\frac{1}{2} \text{ 斗} \qquad (1)

第二次循环:第二次遇花后有 12\frac{1}{2} 斗,说明第二次遇花前有 32\frac{3}{2} 斗(喝 1 斗剩 12\frac{1}{2})。

第二次遇花前的 32\frac{3}{2} 斗是第二次遇店翻倍的结果,所以第二次遇店前有:

34 斗(2)\frac{3}{4} \text{ 斗} \qquad (2)

第一次循环:同理,第一次遇花前有 54\frac{5}{4} 斗,第一次遇店前有:

58 斗(3)\frac{5}{8} \text{ 斗} \qquad (3)

验证:58×2−1=14\frac{5}{8} \times 2 - 1 = \frac{1}{4},14×2−1=−12\frac{1}{4} \times 2 - 1 = -\frac{1}{2}

递推关系

设第 nn 次遇店前有 ana_n 斗酒。

遇店后:2an遇花后:2an−1=an+1(4)\begin{aligned} &\text{遇店后:} 2a_n \\ &\text{遇花后:} 2a_n - 1 = a_{n+1} \end{aligned} \qquad (4)

边界条件:第三次遇花后为 0,即 2a3−1=02a_3 - 1 = 0,所以 a3=12a_3 = \frac{1}{2}。

倒推:

an=an+1+12(5)a_n = \frac{a_{n+1} + 1}{2} \qquad (5)

计算:

a3=12,a2=12+12=34,a1=34+12=78a_3 = \frac{1}{2}, \quad a_2 = \frac{\frac{1}{2} + 1}{2} = \frac{3}{4}, \quad a_1 = \frac{\frac{3}{4} + 1}{2} = \frac{7}{8}

答案:壶中原有 78\frac{7}{8} 斗酒。

验证:

  • 原有 78\frac{7}{8},遇店 → 74\frac{7}{4},遇花 → 34\frac{3}{4}
  • 遇店 → 32\frac{3}{2},遇花 → 12\frac{1}{2}
  • 遇店 → 11,遇花 → 00 ✓

通项公式:等比数列的倒推

递推公式 an=an+1+12a_n = \frac{a_{n+1} + 1}{2} 是一个线性递推。改写为:

an+1=2an−1(6)a_{n+1} = 2a_n - 1 \qquad (6)

这是形如 an+1=pan+qa_{n+1} = pa_n + q 的递推,通解为:

an=C⋅2n+1(7)a_n = C \cdot 2^n + 1 \qquad (7)

代入边界条件 a3=12a_3 = \frac{1}{2}:

C⋅8+1=12  ⟹  C=−116C \cdot 8 + 1 = \frac{1}{2} \implies C = -\frac{1}{16}

所以:

an=1−116⋅2n=1−2n−4(8)a_n = 1 - \frac{1}{16} \cdot 2^n = 1 - 2^{n-4} \qquad (8)

初始量(n=1n=1):

a1=1−2−3=1−18=78(9)a_1 = 1 - 2^{-3} = 1 - \frac{1}{8} = \frac{7}{8} \qquad (9)

推广:kk 次遇店和花

如果李白遇到了 kk 次店和花,初始酒量为:

a1=1−12k(10)a_1 = 1 - \frac{1}{2^k} \qquad (10)

当 k=3k=3 时,a1=1−18=78a_1 = 1 - \frac{1}{8} = \frac{7}{8},与前面一致。

极限情况:当 k→∞k \to \infty 时,a1→1a_1 \to 1。也就是说,如果李白无限次遇店遇花,他只需要 1 斗酒就"够用了"——每次翻倍后再喝 1 斗,酒量始终趋近于 1。

在高中数学体系里的位置

思想延伸:李白打酒问题本质上是一个一阶线性递推数列。高中数学中,形如 an+1=pan+qa_{n+1} = pa_n + q 的递推是数列章节的重点内容,解法是构造等比数列。

运算练兵场:递推公式的求解涉及等比数列通项、待定系数法,是高考数列大题的常见考法。

综合题常客:不定方程和递推数列常常结合出题,考查学生的转化能力和计算准确性。

思考与拓展

  1. 如果李白"四遇店和花"后壶空,壶中原有多少酒?

  2. 证明:对于 kk 次遇店和花,初始酒量为 1−12k1 - \frac{1}{2^k}。

  3. 如果每次遇店加一倍后,遇到花喝的不是 1 斗而是 dd 斗,求初始酒量的通项公式。

  4. 查阅资料:这个问题在宋代《算学启蒙》中也有记载,称为"李白沽酒"。比较两个版本的异同。

一句话总结

李白打酒用逆向推理将复杂过程简化为线性递推,体现了"从结果反推条件"的数学思维,是一阶线性递推数列的经典入门题。

— Y. · 2026-10-28"