警告:远古时期文章,内容过于naive,有的还没有严谨证明qaq
问题是这样的:求$0^k+1^k+2^k+\dots +n^k$的通项公式。
首先,这个因为n可能为0,所以通项公式一定是没有常数项的。继续观察可知,通项公式的次数是$k+1$。这样,我们设通项公式为$f(n)=\sum_{i=1}^{k+1}a_in^i$。我们的目标就是要求出这些系数。
通项公式满足:
$$f(n+1)-f(n)=(n+1)^k$$
这个等式可以直接暴力展开:
$$f(n+1)-f(n)=(n+1)^k$$
$$\sum_{i=1}^{k+1}a_i(n+1)^i-\sum_{j=1}^{k+1}a_jn^j=(n+1)^k$$
$$\sum_{i=1}^{k+1}a_i[(n+1)^i-n^i]=(n+1)^k$$
$$\sum_{i=1}^{k+1}a_i\sum_{j=0}^{i-1}C_i^jn^j=\sum_{x=0}^{k}C_k^xn^x$$
等式左右两边都是多项式,可以对比系数。
暴力展开:
$$a_1(C^0_1n^0)+a_2(C^0_2n^0+C^1_2n^1)+\dots +a_{k+1}(C^0_{k+1}n^0+C^1_{k+1}n^1+\dots +C^k_{k+1}n^k)=C^0_kn^0+C^1_kn^1+\dots +C^k_kn^k$$
化简+对比系数:
$$
\left
\{
\begin{array}{c}
\sum^{k+1}_{i=1}a_iC^0_i=C^0_k
\\
\\
\sum^{k+1}_{i=2}a_iC^1_i=C^1_k
\\
\\
\dots \dots
\\
\\
\sum^{k+1}_{i=k+1}a_iC^k_i=C^k_k
\end{array}
\right. $$
这个方程我们从后往前迭代解。
方程解得:
$$
\left
\{
\begin{array}{c}
a_{k+1}=\dfrac{1}{k+1}
\\
\\
a_i=\dfrac{C^{i-1}_k-\sum^{k+1}_{j=i+1}a_jC^{i-1}_j}{i}
\end{array}
\right. $$
用这个式子就可以$O(k^2)$用我这个垃圾的做法得出通项公式了。
可以注意到,当$i$为1时,由上面的式子可得出:
$\quad a_1=\dfrac{C_k^0-\sum_{j=2}^{k+1}a_jC_j^0}{1}$
$\quad \quad =1-\sum_{j=2}^{k+1}a_j$
再变一下就是:
$$\sum_{i=1}^{k+1}a_i=1$$
也就是说,通项公式的系数和为1.
-------------------------------------------------------------
update on 2020.02.22:
当然还有复杂度更优的做法,但是我并不会。