You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求小于10¹⁰的递增数字个数:曲棍球棒恒等式解法疑问

嘿,我来帮你把这个问题和曲棍球棒恒等式的应用理得明明白白——其实本质是把上坡数的计数转化为组合数学里的经典问题,再用恒等式快速求和。

先明确问题边界

首先,咱们得精准定义“小于10¹⁰的上坡数”:

  • 上坡数是各位数字从左到右非严格递增的正整数(比如122349符合,单数字如5也符合,0不算,因为它不是正整数);
  • 小于10¹⁰意味着这个数最多是10位(10位数字的最高位不能是0,否则就变成更少位数的数了)。

把上坡数转化为组合问题

对于任意一个k位的上坡数(k从1到10),它的各位数字满足:
1 ≤ a₁ ≤ a₂ ≤ ... ≤ aₖ ≤ 9

你仔细想一下:这样的数字序列,和“从1-9这9个数字中可重复地选取k个元素”是一一对应的——每个多重组合(允许重复选同一个数字),按从小到大排好就是唯一的上坡数;反过来每个上坡数也对应唯一的一个多重组合。

根据组合数学里的多重组合数公式:从n个不同元素中可重复选k个的组合数是C(n + k - 1, k)。这里n=9(数字1到9),所以k位上坡数的数量就是:
C(9 + k - 1, k) = C(k + 8, k)
利用组合数的性质C(n, k) = C(n, n-k),可以写成更方便求和的形式:C(k + 8, 8)。

曲棍球棒恒等式的妙用

现在我们需要计算1位到10位上坡数的总数,也就是求这个求和式:
S = sum_{k=1}^{10} C(k + 8, 8)

先调整一下求和变量:令r = k + 8,当k=1时r=9,k=10时r=18,所以求和式变成:
S = sum_{r=9}^{18} C(r, 8)

这时候就轮到曲棍球棒恒等式出场了!这个恒等式的核心形式是:
sum_{r=m}^{n} C(r, m) = C(n + 1, m + 1)

如果我们从r=8开始求和(也就是加上r=8时的项C(8,8)),就完全符合恒等式的形式:
sum_{r=8}^{18} C(r, 8) = C(19, 9)

而C(8,8)=1,所以我们要的S就是这个结果减去1:
S = C(19, 9) - 1

计算最终结果

现在算组合数C(19,9):
C(19,9) = 19!/(9!×10!) = 92378

所以总数就是:
S = 92378 - 1 = 92377

补充小说明

如果题目把0也算作上坡数,那总数就是92378,但从问题里的例子(122349)来看,显然是统计正整数,所以最终答案是92377。

内容的提问来源于stack exchange,提问作者Kadek Surya Mahardika

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:44:24