ABC449G - Many Repunit Sum 2

定义 repunit 指每个位上都是 \(1\) 的数。给定 \(N\),\(M\),对满足以下条件的数计数。

  • 可以被表示为 \(N\) 个长度至多为 \(M\)repunit 之和。

\[N\le10^5,M\le10^9 \]


我们会发现长为 \(d\)repunit \(=\frac19(10^d-1)\)

\(x=\sum \frac19(10^{d_i}-1)\),那么 \(X=9x+N=\sum 10^{d_i}\),对这两者计数是等价的。

考虑 \(X\) 什么时候满足条件,设 \(X=k10^M+r\)\(S(r)\) 表示 \(r\) 的数位和。

由于所有数都 \(\le 10^M\),因此我们需要将 \(X\) 表示为至少 \(A(x)=k+S(r)\)\(10^d\) 的和。

同时我们可以通过每次替换 \(10^d\)\(10\times 10^{d-1}\) 增加额外 \(9\) 个数。

因此 \(X\) 满足题意的充要条件为:

  • \(x\ge N\)
  • \(A(x)\le N\)
  • \(A(X)\equiv N\pmod 9\)

因此我们可以枚举 \(A(x)\),然后枚举 \(S(r)\le A(X)\),对于每个 \(S(r)\) 均对应唯一的 \(k\)

对于 \(x<N\) 的情况,不难发现每个 \(x\equiv9\pmod N\) 都会被算一次,那么在最后减去 \(\lfloor N/9\rfloor\) 即可。

那么我们记 \(C(s)\) 表示 \(S(x)=s\)\(x\) 的个数, \(B(s)\) 为其前缀和,则有:

\[\begin{align*} Ans&=\sum_{z=0}^{\lfloor N/9\rfloor}\sum_{i=0}^{n-9z}C(i) \\ &=\sum_{z=0}^{\lfloor N/9\rfloor}B(n-9z) \end{align*} \]

那么考虑 \(C\) 的生成函数 \(F(x)\)

\[F(x)=(x^1+x^2+\cdots+x^9)^{M-1} \]

到这里已经可以多项式快速幂 \(O(n\log^2)\) 解决,但是我们进一步推导:

\[\begin{align*} (x^1+x^2+\cdots+x^9)^{M-1}&=\left(\dfrac{1-x^{10}}{1-x}\right)^{M-1} \\&=(1-x^{10})^{M-1}(1-x)^{1-M} \end{align*} \]

考虑 \(B\) 的生成函数 \(G(x)\),满足 \(B\)\(C\) 的前缀和,也即:

\[\begin{align*} G(x)&=\frac{C(x)}{1-x} \\ &=(1-x^{10})^{M-1}(1-x)^{-M} \end{align*} \]

我们对两项分别用广义二项式定理展开:

\[(1-x^10)^{M-1}=\sum_{i=0}^{M-1}\binom{M-1}i(-1)^ix^{10i} \]

\[(1-x)^{-M}=\sum_{i=0}^\infty \binom{M+i-1}{M-1}x^i \]

相乘可得:

\[[x^n]G(x)=\sum_{i=0}^{\lfloor n/10\rfloor}\binom{M-1}i(-1)^i\binom{M+n-10i-1}{M-1} \]

代入上面 \(Ans\) 的式子:

\[\begin{align*} Ans&=\sum_{z=0}^{\lfloor N/9\rfloor}\sum_{i=0}^{\lfloor (N-9z)/10\rfloor}(-1)^i\binom{M-1}i\binom{M+N-9z-10i-1}{M-1} \\&=\sum_{i=0}^{\lfloor N/10\rfloor}\binom{M-1}i(-1)^i\sum_{z=0}^{\lfloor (N-10i)/9\rfloor}\binom{M+N-9z-10i-1}{M-1} \\&=\sum_{i=0}^{\lfloor N/10\rfloor}\binom{M-1}i(-1)^iH(N-10i) \end{align*} \]

其中

\[H(N)=\sum_{i=N-9z,0\le i\le N}\binom{M+i-1}i \]

只需预处理 \(\binom{M-1}i\)\(\binom{M+i-1}i\) 即可 \(\mathcal O(N)\) 计算。

不要忘记 \(-\lfloor N/9\rfloor\) 哦。

posted @ 2026-03-15 12:31  CuteNess  阅读(27)  评论(0)    收藏  举报