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)\) 计算了。

posted @ 2022-05-26 19:31  Werner_Yin  阅读(43)  评论(0编辑  收藏  举报