Loading

基础组合数练习题

题目很简单,求:

\[Ans=\frac{\sum\limits_{i=m}^n\binom{i-1}{m-1}\times i^k}{\binom{n}{m}} \]

其中,给定 \(n\)\(m\)\(k\)
满足 \(m\leq n \leq 10^7 , k\leq 5000\) ,数据组数不超过 \(5000\)

前置知识:

容易发现 \(\binom{n}{m}\) 是一个定值,所以只需要化简分子。

\[\begin{split} S&=\sum\limits_{i=m}^n\binom{i-1}{m-1}\times i^k\\ &=\sum\limits_{i=m}^n\binom{i-1}{m-1}\times \sum\limits_{j=0}^k\begin{Bmatrix}k\\j\end{Bmatrix}(-1)^{k-j}\times i^{\overline{j}}\\ &=\sum_{j=0}^k\begin{Bmatrix}k\\j\end{Bmatrix}(-1)^{k-j}\sum_{i=m}^n\binom{i-1}{m-1}\times i^{\overline{j}}\\ &=\sum_{j=0}^k\begin{Bmatrix}k\\j\end{Bmatrix}(-1)^{k-j}\sum_{i=m}^n \frac{(i-1)!}{(m-1)!(i-m)!}\times\frac{(i + j - 1)!}{(i-1)!}\\ &=\sum_{j=0}^k\begin{Bmatrix}k\\j\end{Bmatrix}(-1)^{k-j}\sum_{i=m}^n \frac{(i + j - 1)!}{(m-1)!(i-m)!}\\ \end{split} \]

我们设 \(t= i - m\) ,并用 \(t\) 代替式子中的 \(i\)

\[\begin{split} S &= \sum_{j=0}^k\begin{Bmatrix}k\\j\end{Bmatrix}(-1)^{k-j}\sum_{i=m}^n \frac{(i + j - 1)!}{(m-1)!(i-m)!}\\ &=\sum_{j=0}^k\begin{Bmatrix}k\\j\end{Bmatrix}(-1)^{k-j}\sum_{i=0}^{n - m} \frac{(t + m + j - 1)!}{(m-1)!\times t!}\\ &=\frac{1}{(m-1)!}\sum_{j=0}^k\begin{Bmatrix}k\\j\end{Bmatrix}(-1)^{k-j}\sum_{i=0}^{n - m} \frac{(t + m + j - 1)!}{t!}\\ &=\frac{1}{(m-1)!}\sum_{j=0}^k\begin{Bmatrix}k\\j\end{Bmatrix}(-1)^{k-j}\sum_{i=0}^{n - m} \frac{(t + m + j - 1)!}{t!\times (m+j-1)!}\times(m+j-1)!\\ &= \frac{1}{(m-1)!}\sum_{j=0}^k\begin{Bmatrix}k\\j\end{Bmatrix}(-1)^{k-j}(m+j-1)!\sum_{i=0}^{n - m} \frac{(t + m + j - 1)!}{t!\times (m+j-1)!}\\ &=\frac{1}{(m-1)!}\sum_{j=0}^k\begin{Bmatrix}k\\j\end{Bmatrix}(-1)^{k-j}(m+j-1)!\sum_{i=0}^{n - m}\binom{t+m+j-1}{m+j-1}\\ &=\frac{1}{(m-1)!}\sum_{j=0}^k\begin{Bmatrix}k\\j\end{Bmatrix}(-1)^{k-j}(m+j-1)!\binom{m+j-1+n-m+1}{n-m}\\ &=\frac{1}{(m-1)!}\sum_{j=0}^k\begin{Bmatrix}k\\j\end{Bmatrix}(-1)^{k-j}(m+j-1)!\binom{n + j}{n-m}\\ \end{split} \]

发现只有一个和 \(i\) 有关的组合数,其他的可以直接预处理。
每次操作的复杂度是 \(O(k)\)\(T\) 组数据的话就是 \(O(Tk)\)

代码小学难度。

posted @ 2022-10-14 19:29  Aonynation  阅读(74)  评论(0编辑  收藏  举报