版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011056504/article/details/82533677
写在这里,目的是在以后需要看的时候不用再去网上抄(划掉)
求s(n)=∑i=1nik
拉格朗日插值法
给定若干个点值,(x0,y0),(x1,y1),(xn,yn),它们的差值多项式
L(x)=∑i=0nyi∗∏j≠ix−xjxi−xj
听说自然数幂和可以表示为k+1次多项式函数。
求自然数幂和的时候,就直接取点值为(0,s(0)),(1,s(1)),(k+1,s(k+1))
于是
L(n)=∑i=0k+1s(i)∗∏j≠in−ji−j
L(n)=∑i=0k+1s(i)∗(−1)k+1−in(n−1)...(n−i+1)(n−i−1)...(n−k−1)i!(k+1−i)!
预处理k以内的自然数幂和,求个逆元就好了。
复杂度
O(k)
第二类斯特林数法
但是如果不能求逆元
已知(显然)
nk=∑i=0k{ki}∗ni–
可以用组合意义理解。
那么
∑i=1nik=∑j=1n∑i=0k{ki}∗ji–
=∑i=0k{ki}∑j=1nji–
=∑i=0k{ki}i!∑j=1nCij
=∑i=0k{ki}i!Ci+1n+1
这样的话就不用逆元了,复杂度是
O(k2)