自然数幂求和及其证明
自然数幂求和:
给定正整数$N,K$ , 求
$$\sum _{i=1}^{N} i^K$$
证明:上式是一个关于$ N $的$ K+1 $次多项式.
定义:对于一个数列$\{ a_n \}$如果数列中的数全部相等,则称其为常数数列。
对于数列$\{ a_n \}$ , 令数列$\{ b_n \}$满足$b_i=a_{i+1}-a_{i}$,那么称$b$是$a$的一阶差分数列,记作$\Delta a$。
平常所说的等差数列的一阶差分数列就是常数数列。
$b$的一阶差分数组为$a$的二阶差分数列,表示为$\Delta ^2 a$.
以此类推 $a$的$p$阶差分数列记为$\Delta^p a=\Delta(\Delta^{p-1} a)$
如果数列 $a$ 的$p$阶差分数列为非0常数数列,则记$a$为$p$阶等差数列。
定理:某个数列是一个$p$阶等差数列当且仅当他的通项公式是一个$p$次多项式。
证明:设数列$\{A_n\}$.其通项公式为$A(x)=\sum t_i x^i$.
设$\{T_n\}$为其一阶差分数列,则有
$$T(x) = A(x+1)-A(x)$$
$$=\sum _{i=0} ^{N} t_i((x+1)^i - x^i)$$
容易发现$T(x)$这个多项式的第$n-1$项系数为0,这就代表着每做一次差分变换,数列的通项公式次数将下降1.
于是定理显然成立。
令
$$f(x)=\sum _{i=1} ^{x} i^K$$
考虑$\Delta f(x)=(x+1)^K$,也就是说$f$的差分数列的通项公式是一个$K$次多项式,这也就说明了$f$实际上是一个$K+1$次多项式。
在证明了它的性质之后,我们就可以用拉格朗日插值法求解这个式子。
首先我们可以在$O(K log K)$时间内求出前$K+2$项。
一般的拉格朗日插值法:
$$f(k) = \sum _{i=0} ^{n} y_i \prod _{i \neq j} \frac{k-x[j]}{x[i]-x[j]}$$
这样是$O(K^2)$的,需要想办法优化,容易发现取值连续,于是上一个套路的优化:
令$pre_i=\prod _{j=0} ^{i} k-x[j] , suf_i=\prod _{j=i+1} ^{n} k-x[j]$
$$f(k) = \sum _{i=0} ^{n} y_i \prod _{i \neq j} \frac{k-x[j]}{x[i]-x[j]}$$
$$= \sum _{i=0} ^{n} y_i \frac{\prod _{i \neq j} k-x[j]}{\prod _{i \neq j}x[i]-x[j]}$$
$$= \sum _{i=0} ^{n} y_i \frac{pre_{i-1} * suf_{i+1}}{(-1)^{N-i} i! (N-i)!}$$
之后这个式子里每一项都很好求了。
题目来源:CF622F