自然数幂和

定义:

\(S(n,m)=\sum_{i=1}^ni^m\)

则有:

\(S(n,m+1)=\sum_{i=1}^ni^{m+1}\)

\(S(n+1,m+1)=\sum_{i=1}^{n+1}i^{m+1}\)

令二式直接相减可得

\(S(n+1,m+1)-S(n,m+1)=(n+1)^{m+1}\)

错位相减可得

\(S(n+1,m+1)-S(n,m+1)=1+\sum_{i=1}^n(i+1)^{m+1}-i^{m+1}\)

联立二式可得

\( \begin{aligned} (n+1)^{m+1}&=1+\sum_{i=1}^n(i+1)^{m+1}-i^{m+1}\\ &=1+\sum_{i=1}^n-i^{m+1}+\sum_{j=0}^{m+1}C_{m+1}^j*i^j\\ &=1+\sum_{i=1}^n\sum_{j=0}^mC_{m+1}^j*i^j\\ &=1+\sum_{j=0}^mC_{m+1}^j*\sum_{i=1}^ni^j\\ &=1+\sum_{j=0}^mC_{m+1}^j*S(n,j) \end{aligned} \)
(这玩意他们叫扰动法,nodgd叫错位相减法,我是第一次见这玩意)

\((n+1)^{m+1}=1+\sum_{j=0}^mC_{m+1}^j*S(n,j)\)

\(S(n,m)=\frac 1{m+1}(1-(n+1)^{m+1}+\sum_{j=0}^{m-1}C_{m+1}^j*S(n,j))\)

反正大概就是这个式子

数学归纳一下就可以得出 \(S(n,m)\) 是一个关于 \(n\)\(m\) 次多项式

然后对于 \(m<=1e9\) 的情况就可以 \(O(m)\) 地插值计算了单个 \(S(n,m)\)

PS: \(i^k\) 是积性函数,可以用线性筛 \(O(m)\) 预处理,再前缀和一下即可

posted @ 2024-03-26 18:01  zhuzc_114514  阅读(12)  评论(0编辑  收藏  举报