[省选联考 2020 A 卷] 组合数问题
[省选联考 2020 A 卷] 组合数问题
求
\[
\left(\sum_{k=0}^{n}f(k)\times x^k\times \binom{n}{k}\right)\bmod p
\]
其中 \(n\), \(x\), \(p\) 为给定的整数,\(f(k)\) 为给定的一个 \(m\) 次多项式
\(f(k) = a_0 + a_1k + a_2k^2 + \cdots + a_mk^m\)
\(1\le n, x, p \le 10^9, 0\le a_i\le 10^9, 0\le m \le \min(n,1000)\)。
看到这题肯定是推式子,把枚举量变成与 \(n\) 无关的形式
看到什么 \(x^k\) 想到斯特林数,但是下降幂搞他没有用
考虑问题的关键在于 \(k\), 而多项式中还有与 \(k\) 相关的东西,于是对他做文章
先把多项式展开
\[
=\sum_{k=0}^{n}\sum_{i = 0}^{m}f_i \times k^i \times x^k\times \binom{n}{k}
\]
\[
=\sum_{i = 0}^{m}f_i \sum_{k=0}^{n}k^i \times \binom{n}{k} \times x^k
\]
把 \(k^i\) 转下降幂
\[
=\sum_{i = 0}^{m}f_i \sum_{k=0}^{n}\sum_{j = 0}^{min(k, i)} \begin{Bmatrix}i\\ j\end{Bmatrix}k^{\underline{j}}\binom{n}{k}x^k
\]
把组合数拆开消一下,再写成组合数得到
\[
=\sum_{i = 0}^{m}f_i \sum_{k=0}^{n}\sum_{j = 0}^{min(k, i)} \begin{Bmatrix}i\\ j\end{Bmatrix}n^{\underline{j}}\binom{n - j}{k - j}x^k
\]
变 \(k\) 为枚举 \(k - j\)
\[
=\sum_{i = 0}^{m}f_i \sum_{k=0}^{n-j}\sum_{j = 0}^{i} \begin{Bmatrix}i\\ j\end{Bmatrix}n^{\underline{j}}\binom{n - j}{k}x^{k + j}
\]
\[
=\sum_{i = 0}^{m}f_i\sum_{j = 0}^{i} \begin{Bmatrix}i\\ j\end{Bmatrix}n^{\underline{j}}x^j\sum_{k=0}^{n-j}\binom{n - j}{k}x^{k}
\]
\[
=\sum_{i = 0}^{m}f_i\sum_{j = 0}^{i} \begin{Bmatrix}i\\ j\end{Bmatrix}n^{\underline{j}}x^j(x + 1)^{n - j}
\]
于是做完了