传送门
题意:
求
\[ f(n)=\sum_{i=0}^n\sum_{j=0}^i\begin{Bmatrix} i \\ j \end{Bmatrix}2^jj! \]
思路:
直接将第二类斯特林数展开有:
\[ \begin{aligned} f(n)=&\sum_{i=0}^n\sum_{j=0}^n2^j\sum_{k=0}^{j}(-1)^k{j\choose k}(j-k)^{i}\\ =&\sum_{i=0}^n\sum_{j=0}^n2^jj!\sum_{k=0}^j\frac{(-1)^k}{k!}\frac{(j-k)^i}{(j-k)!}\\ =&\sum_{j=0}^n2^jj!\sum_{k=0}^j\frac{(-1)^k}{k!}\frac{\sum_{i=0}^n(j-k)^i}{(j-k)!} \end{aligned} \]
观察到后半部分为一个卷积的形式,我们令\(\displaystyle a_i=\frac{(-1)^i}{i!},b_i=\frac{\sum_{j=0}^ni^j}{i!}\),其中\(\sum_{j=0}^n i^j\)为等比数列求和的形式。那么直接将这两个作为系数卷一卷即可。
还有一种做法为展开递推式的做法,忘了怎么做了。。明天来补。
upd:做法如下:
\[ \begin{aligned} f(n)=\sum_{j=0}^n2^jj!\sum_{i=j}^n\begin{Bmatrix} i \\ j \end{Bmatrix} \end{aligned} \]
令\(\displaystyle F(j)=\sum_{i=j}^n\begin{Bmatrix} i \\ j \end{Bmatrix}\),之后将第二类斯特林数用递推式展开:
\[ \begin{aligned} F(j)=&\sum_{i=j}^n\begin{Bmatrix} i \\ j \end{Bmatrix}\\ =&\sum_{i=j}^n\begin{Bmatrix} i - 1 \\ j - 1 \end{Bmatrix}+\sum_{i=j}^nj\begin{Bmatrix} i - 1 \\ j \end{Bmatrix}\\ =&F(j-1)-\begin{Bmatrix} n \\ j - 1 \end{Bmatrix}+jF(j)-j\begin{Bmatrix} n \\ j \end{Bmatrix}\\ =&F(j - 1)+jF(j)-\begin{Bmatrix} n + 1 \\ j \end{Bmatrix} \end{aligned} \]
所以最后有:
\[ F(j)=\frac{F(j-1)-\begin{Bmatrix} n + 1 \\ j \end{Bmatrix}}{1-j} \]
那么预处理出\(n+1\)这一行的斯特林数,然后直接用递推式算出\(F\)即可。
代码是第二种方法:
/*
* Author: heyuhhh
* Created Time: 2019/12/12 11:16:54
*/
#include
#include
#include
#include
#include
#include
#include