基础组合数练习题
题目很简单,求:
\[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\) 。
前置知识:
- \(i^k=\sum\limits_{j=0}^k\begin{Bmatrix}k\\j\end{Bmatrix}(-1)^{k-j}\times i^{\overline{j}}\)
- 组合数公式全家桶
容易发现 \(\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)\) 。
代码小学难度。