求和

第二类斯特林数的拆幂公式:
$i^k = \sum _{j = 0} ^k \begin{Bmatrix} k \\ j \end{Bmatrix} j! {i \choose j}$
二项式反演一下:
$\begin{Bmatrix} k \\ j \end{Bmatrix} j! = \sum _{i = 0} ^j (-1) ^{j - i} {j \choose i} i ^k$
带入题目的式子
$\sum _{i = 0} ^n \sum _{j = 0} ^n 2 ^j \sum _{k = 0} ^j (-1) ^{j - k} {j \choose k} k ^i$
交换和式
$\sum_{j = 0} ^n 2 ^j \sum _{k = 0} ^j (-1) ^{j - k} {j \choose k}\sum _{i = 0} ^n k ^i$
后面的是个等比数列求和,设$\sum _{i = 0} ^n k ^i$为$a_i$,$a_i$=$\cfrac{k^n-1}{k-1}$
计算$a_i=k^n$,$-1$乘以逆元即可。
$a$是一个完全积性函数,使用筛法+快速幂计算$a$。只有素数位置的$a$需要被计算,时间复杂度是线性的。
公式变为:
$\sum_{j = 0} ^n 2 ^j \sum _{k = 0} ^j (-1) ^{j - k} {j \choose k}a_{k}$
可以ntt计算,但是有更好的方法。
交换和式并拆开$2$的次幂:
$\sum_{k = 0} ^na_{k} 2^j \sum _{k = j} ^n (-1) ^{j - k} {j \choose k}=\sum_{k = 0} ^na_{k} 2^k \sum _{k = j} ^n (-2) ^{j - k} {j \choose k}$
令$b_j=\sum _{i = j} ^n (-2) ^{i-j} {i \choose j}$
原式变为:
$\sum_{k = 0} ^na_{k} 2^k b_{k}$
用杨辉三角拆$b$
$b_j=\sum _{i = j} ^n (-2) ^{i-j} {i-1 \choose j}+\sum _{i = j} ^n (-2) ^{i-j} {i-1 \choose j-1}$
前半部分的计算:
$b_j=\sum _{i = j} ^n (-2) ^{i-j} {i-1 \choose j}=b_j=\sum _{i = j-1} ^{n-1} (-2) ^{i-j+1} {i \choose j}=(-2)\sum _{i = j-1} ^{n-1} (-2) ^{i-j} {i \choose j}=(-2)(b_j-{n \choose j}(-2)^{n-j})$
后半部分:
$b_j=\sum _{i = j} ^n (-2) ^{i-j} {i-1 \choose j-1}=b_j=\sum _{i = j-1} ^{n-1} (-2) ^{i-j+1} {i \choose j-1}=b_{j-1}-{n \choose j-1}(-2)^{n-j+1}$
综上:
$b_j=(-2)(a_j-{n \choose j}(-2)^{n-j})+b_{j-1}-{n \choose j-1}(-2)^{n-j+1}$
$b_j=-2b_j-{n \choose j}(-2)^{n-j+1}+b_{j-1}-{n \choose j-1}(-2)^{n-j+1}$
$b_j=\cfrac{-{n \choose j}(-2)^{n-j+1}+b_{j-1}-{n \choose j-1}(-2)^{n-j+1}}{3}$
得到了一个$O(n)$的优秀爆标做法。

你可能感兴趣的:(求和)