题目描述
题解
根据可知
\(n^m=\sum_{k=0}^m S_2(m,k)n^{\underline{k}}\)
所以
\(f(n)=\sum_{i=1}^ni^k=\sum_{i=1}^n\sum_{j=0}^k S_2(k,j)i^{\underline{k}}\)
\(\:\:\:\:\:\:\:\:\:=\sum_{j=0}^k S_2(k,j)\sum_{i=1}^ni^{\underline{k}}=\sum_{j=0}^k S_2(k,j)\cdot\frac{(n+1)^{\underline{j+1}}}{j+1}\)
具体证明
可见f(n)是一个k+1次多项式
考虑拉格朗日插值,只要求出k+2个点,就能求出f(n)
暴力求出\(f(0),f(1),···,f(k+1)\),时间复杂度为\(O(k\cdot logk)\)
则\(f(n)=\sum_{i=0}^{k+1}f_i\prod_{j\not=n}\frac{n-j}{i-j}\)
这是特殊的拉格朗日,通过预处理\(O(k)\)即可求出答案
总时间复杂度为\(O(k\cdot logk)\)
点击查看代码
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include