Luogu5591 小猪佩奇学数学
给定 \(n,p,k\),询问
\[\sum_{i=0}^n \binom n i \times p^{i} \times \left\lfloor \frac{i}{k} \right\rfloor \bmod 998244353 \]对于 \(100\%\) 的数据,\(1 \leq n,p <998244353,k \in \{2^{w}|0 \leq w \leq 20\}\)。
数学/反演/单位根反演
首先,考虑一个比较 easy 的问题,\(k = 1\) 怎么做:
\[\begin{aligned}
&\sum_{i = 0}^n \binom{n}{i} p^i i\\
=& \sum_{i = 0}^n \frac{n}{i} i\binom{n - 1}{i - 1} p^i\\
=& np \sum_{i = 0}^{n - 1} \binom{n - 1}{i} p^i\\
=& np (p+ 1)^{n - 1}
\end{aligned}
\]
可以直接计算。
整个式子中 \(\left\lfloor\frac{i}{k}\right\rfloor\) 是最烦人的,如果我们所有的 \(i \bmod k = 0\),那么直接将 \(k = 1\) 的答案算出来然后除以 \(k\) 即可,于是我们可将算出 \(k = 1\) 的答案,然后减去 \(\sum_{i = 0}^n \binom{n}{i}p^i (i \bmod k)\),最后除以 \(k\)。
而数据范围中的 \(k = 2^t\) 已经暗示了考虑 \(i \bmod k\) 然后进行单位根反演。
枚举 \(i \bmod k = d\),有:
\[\begin{aligned}
&\sum_{i = 0}^n \binom{n}{i}p^i (i \bmod k)\\
=&\sum_{d = 0}^{k - 1} d \sum_{i = 0}^n \binom{n}{i} p^i [ k | (i - d)] \\
=&\sum_{d = 0}^{k - 1} d \sum_{i = 0}^n \binom{n}{i} p^i \sum_{j = 0}^{k - 1} \omega_k^{(i - d)j}\\
=&\sum_{j = 0}^{k - 1}\left( \sum_{d = 0}^{k - 1} d\omega_k ^{-jd}\right) \left(\sum_{i = 0}^{k - 1} \binom{n}{i} p^i \omega_k^{ij}\right)\\
=&\sum_{j = 0}^{k - 1}\left( \sum_{d = 0}^{k - 1} d\omega_k ^{-jd}\right) (\omega_k^{j}p + 1)^n \\
\end{aligned}
\]
结果卡在了第一个式子上面,这个可以考虑一个问题:
令 \(T(n, x)\) 表示 \(\sum_{i = 0}^n ix^i\),然后有:
\[(1 - x)T(n, x) =\left( \sum_{i = 1}^n x^i \right)- n x^{n + 1}\\ T(n, x) = \frac{\frac{1 - x^{n +1}}{1 - x} - n x^{n+ 1}}{1 - x} \]
于是就可以 \(\mathcal O(k \log k)\) 计算了。
本博客作者:Werner_Yin(https://www.cnblogs.com/werner-yin/) ,转载时请注明出处,谢谢支持!