题意
求有多少包含 \(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})]\)。于是此题得解。
标签:CF1808E3,begin,题解,sum,nx,binom,aligned,equiv From: https://www.cnblogs.com/fish07/p/17454236.html