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

童释丸——最值问题初探

童善算,以器验之。用最少的珠子表示最大的数,这是 optimization 的朴素思想。

原典

今有童释丸,以算盘算数。每档上珠一颗,下珠五颗。问:用几档可表示最大三位数?

——《算法统宗》卷三·算法总括

这道题说的是什么

一个孩子用算盘来试算,他想用尽可能少的档位表示一个三位数。每个档位有上珠 1 颗(代表 5)和下珠 5 颗(代表 5),最多能表示 9。

问题是:用几档可以表示最大的三位数?

这道题看似简单,但触及了最值问题的核心思想——在约束条件下寻找最优解。

问题分析

算盘每档最多表示 9(上珠 1 颗 + 下珠 4 颗 = 5 + 4 = 9)。

要表示最大的三位数,我们需要:

  • 百位最大:9
  • 十位最大:9
  • 个位最大:9

所以最大的三位数是 999,需要3 档。

但题目问的是"用几档可表示最大三位数"——这实际上是在问:给定档位数,能表示的最大三位数是多少?

示意图

童释丸最值问题

算盘每档最多表示 9,3 档可表示最大三位数 999。

推广:nn 档能表示的最大数

如果有 nn 档,每档最多表示 9,那么能表示的最大数是:

Mn=99…9⏟n 个=10n−1(1)M_n = \underbrace{99\ldots9}_{n \text{ 个}} = 10^n - 1 \qquad (1)

反过来,要表示最大的 kk 位数,需要 kk 档。

更深层的问题:最小档位表示

如果问题是反过来的:用最少的档位表示所有三位数,那答案是多少?

  • 一位数:1 档(0-9)
  • 两位数:2 档(00-99)
  • 三位数:3 档(000-999)

但这里有进位的问题——如果某档满 10,就需要向高一档进位。所以实际上,算盘的档位数是固定的,我们只能利用已有的档位。

优化思想

童释丸的问题触及了优化的核心:

  1. 目标函数:最大化表示的数
  2. 约束条件:档位数量有限
  3. 决策变量:每档放多少珠子

这是一个典型的整数规划问题——在离散的空间中寻找最优解。

与高中数学的联系

思想延伸:最值问题是高中数学的重要主题,涉及函数极值、不等式、线性规划等内容。童释丸问题是最简单的离散优化实例。

运算练兵场:算盘的位值制体现了十进制的优越性——每档独立表示 0-9,组合起来就是任意整数。

算法思维:优化问题的核心是分解——把大问题拆成小问题,逐个解决。

思考与拓展

  1. 如果用算盘表示最大的四位数,需要几档?最大能表示多少?

  2. 如果每档上珠代表 5,下珠代表 1,但下珠只有 4 颗(而非 5 颗),每档最多表示多少?

  3. 证明:nn 档算盘能表示的最大数是 10n−110^n - 1。

  4. 如果目标是表示"所有三位数中最小的那个",答案是什么?这是否是一个有意义的问题?

一句话总结

童释丸问题用最朴素的算盘展示了最值问题的核心:在约束条件下寻找最优解,这是优化的起点。

— Y. · 2026-11-02"