[省选联考 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} \]

于是做完了

posted @ 2023-03-30 14:27  Chen_jr  阅读(11)  评论(0编辑  收藏  举报