[Luogu] P4948 数列求和

\(Link\)

Description​

给定\(n, a, k\),求\(\sum\limits_{i=1}^ni^ka^i\pmod{1e9+7}\)

Solution​

学习了一种新的推式子方法。

我们令\(f(k)=\sum\limits_{i=1}^ni^ka^i\)

\(a>1\)时,\(f(k)=\sum\limits_{i=1}^ni^ka^i\)

\(=\sum\limits_{i=1}^n(i+1)^ka^{i+1}-(n+1)^ka^{n+1}+a\)

\(=\sum\limits_{i=1}^n\sum\limits_{j=0}^ki^j\dbinom{k}{j}a^{i+1}-(n+1)^ka^{n+1}+a\)

\(=a\sum\limits_{j=0}^k\dbinom{k}{j}f(j)-(n+1)^ka^{n+1}+a\)

整理可得\(f(k)=\dfrac{(n+1)^ka^{n+1}-a-a\sum\limits_{j=0}^{k-1}\dbinom{k}{j}f(j)}{a-1}\)

我们容易求出\(f(0)=\sum\limits_{i=1}^na^i=\dfrac{a(a^n-1)}{a-1}\)(等比数列求和)。\(O(k^2)\)递推即可。

\(a=1\)时,\(f(k)=\sum\limits_{i=1}^ni^k\)

\(=\sum\limits_{i=1}^n(i+1)^k-(n+1)^k+1\)

\(=\sum\limits_{i=1}^n\sum\limits_{j=0}^ki^j\dbinom{k}{j}-(n+1)^k+1\)

\(=\sum\limits_{j=0}^k\dbinom{k}{j}f(j)-(n+1)^k+1\)

整理一下:\((n+1)^k-1=\sum\limits_{j=0}^{k-1}\dbinom{k}{j}f(j)+\dbinom{k}{k}f(k)-f(k)=\sum\limits_{j=0}^{k-2}\dbinom{k}{j}f(j)+\dbinom{k}{k-1}f(k-1)\)

\(k=k+1\)\(f(k)\dbinom{k+1}{k}=(n+1)^{k+1}-1-\sum\limits_{J=0}^{k-1}\dbinom{k+1}{j}f(j)\)

整理得\(f(k)=\dfrac{(n+1)^{k+1}-1-\sum\limits_{j=0}^{k-1}\dbinom{k+1}{j}f(j)}{k+1}\)

我们容易求出\(f(0)=n\)\(O(k^2)\)递推即可。

Tips

快速幂运算之前,先要把底数和指数取个模在运算,否则很有可能爆\(long\ long\)!(调了我一个多小时)

posted @ 2020-10-17 09:28  andysj  阅读(81)  评论(1编辑  收藏  举报