Loading

自然数幂和

警告:远古时期文章,内容过于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:

当然还有复杂度更优的做法,但是我并不会。

posted @ 2019-06-13 23:14  pjykk  阅读(429)  评论(0编辑  收藏  举报