1. 程式人生 > 其它 >Luogu5591 小豬佩奇學數學

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) = \sum_{i = 1}^n x^i - n x^{n + 1} = \frac{\frac{1 - x^{n +1}}{1 - x} - n x^{n+ 1}}{1 - x} \]

  於是就可以 \(\mathcal O(k \log k)\) 計算了。