CF1808E3 题解

题意

传送门

求有多少包含 \(n\) 位数码的 \(k\) 进制数,满足存在一位数等于其他 \(n-1\) 位数的总和模 \(k\)

\(1\le n\le 10^{18},1\le k\le 2000\)

题解

简单的组合数学都不会了……蔬菜越来越多,我该怎么办?

条件等价于存在某一位 \(x\),满足 \(2x\equiv s\pmod k\)。容易想到一个 \(O(nk^3)\) 的数位 \(\text{DP}\) 做法,即钦定 \(s\),然后计数不存在 \(x\) 的方案数。但 \(n\)\(k\) 的范围都很大,用矩阵快速幂等方式优化没有前途。考虑组合计数。

如果 \(k\) 为奇数,则 \(x\)\(s\) 是一一对应的。先考虑这种情况。

每一位都可以取 \([0,k)\) 中任意一个数,这产生了一个很好的性质:如果一位一位填数,最后一位可以将任意 \(s\) 变为任意想要的结果。

这启发我们使用二项式反演。先钦定 \(s\)。设 \(f_i\) 表示有恰好 \(i\) 位为 \(x\) 的方案数,\(g_i\) 表示钦定 \(i\) 位为 \(x\),剩下随意放的方案数。则易得

\[\begin{aligned} g_i&=\left\{ \begin{aligned} &\binom{n}{i}k^{n-i-1}& &(i<n)\\ &[nx\equiv s]& &(i=n) \end{aligned} \right.\\ f_i&=\sum_{j=i}^n(-1)^{j-i}\binom{j}{i}g_j \end{aligned} \]

我们要对所有 \(s\),求 \(f_0\) 之和,最后用总方案数减去即为答案。因为 \(g_n\) 特殊,所以提出来单独考虑。稍微化一下

\[\begin{aligned} f_0&=\sum_{i=0}^{n-1}(-1)^i\binom{n}{i}k^{n-i-1}+(-1)^ng_n\\ &=\sum_{i=0}^n(-1)^i\binom{n}{i}k^{n-i-1}-(-1)^nk^{-1}+(-1)^ng_n\\ &=k^{-1}(\sum_{i=0}^n(-1)^{n-i}\binom{n}{i}k^i-(-1)^n)+(-1)^ng_n \end{aligned} \]

上式中的 \(k^i\) 很适合二项式反演。反演得

\[f_0=k^{-1}((k-1)^n-(-1)^n)+(-1)^ng_n \]

完成。预处理后复杂度 \(O(\log n+k)\)

还有一部分是 \(k\) 为偶数的情况。此时 \(s\) 为奇数显然没有方案,偶数则有两个 \(x\) 与之对应。则改写上式为

\[\begin{aligned} g_i=\left\{ \begin{aligned} &\binom{n}{i}2^ik^{n-i-1}& &(i<n)\\ &\sum_{j=0}^n\binom{n}{j}[jx_1+(n-j)x_2\equiv s]& &(i=n) \end{aligned} \right. \end{aligned} \]

小于 \(n\) 的部分如上化简即可。接下来考虑如何快速求 \(g_n\)

因为 \(x_1=\frac{s+k}{2},x_2=\frac{s}{2}\),所以化为 \(j(x_1-x_2)\equiv s-nx_2\),即 \(j\cdot\frac{k}{2}\equiv s-nx_2\pmod k\)。右边为定值。左边只和 \(j\) 的奇偶性有关。

因为 \(\sum\limits_{i\equiv0\pmod2}\dbinom{n}{i}=\sum\limits_{i\equiv1\pmod2}\dbinom{n}{i}=2^{n-1}\),所以 \(g_n=2^{n-1}[(s-nx_2\equiv0)\vee(s-nx_2\equiv\frac{k}{2})]\)。于是此题得解。

posted @ 2023-06-03 16:57  realFish  阅读(32)  评论(0)    收藏  举报