.
题目:计算∑i=1nri∗ik\sum_{i=1}^nr^i*i^ki=1∑nri∗ik其中n≤109,k≤103n\le10^9,k\le10^3n≤109,k≤103
一个非常巧妙的转化,设
S(x)=∑i=1nri∗ixS(x)=\sum_{i=1}^nr^i*i^xS(x)=i=1∑nri∗ix
我们要求的就是S(k)S(k)S(k)
考虑将式子变形
S(k)=∑i=1nri∗ikS(k)=\sum_{i=1}^nr^i*i^kS(k)=i=1∑nri∗ik
rS(k)=∑i=2n+1ri∗(i−1)krS(k)=\sum_{i=2}^{n+1}r^i*(i-1)^krS(k)=i=2∑n+1ri∗(i−1)k
(r−1)S(k)=nk∗rn+1−r+∑i=2nri∗((i−1)k−ik)(r-1)S(k)=n^k*r^{n+1}-r+\sum_{i=2}^nr^i*((i-1)^k-i^k)(r−1)S(k)=nk∗rn+1−r+i=2∑nri∗((i−1)k−ik)
后面部分用二项式展开∑i=2nri∗((i−1)k−ik)\sum_{i=2}^nr^i*((i-1)^k-i^k)i=2∑nri∗((i−1)k−ik)
=∑i=2nri∗∑j=0k−1Ckj∗(−1)k−j∗ij=\sum_{i=2}^nr^i*\sum_{j=0}^{k-1}C_k^j*(-1)^{k-j}*i^j=i=2∑nri∗j=0∑k−1Ckj∗(−1)k−j∗ij
=∑j=0k−1Ckj∗(−1)k−j∑i=2nri∗ij=\sum_{j=0}^{k-1}C_k^j*(-1)^{k-j}\sum_{i=2}^nr^i*i^j=j=0∑k−1Ckj∗(−1)k−ji=2∑nri∗ij
=∑j=0k−1Ckj∗(−1)k−j∗(S(j)−r)=\sum_{j=0}^{k-1}C_k^j*(-1)^{k-j}*(S(j)-r)=j=0∑k−1Ckj∗(−1)k−j∗(S(j)−r)
于是可以O(n2)O(n^2)O(n2)递推
序列求和V2
最新推荐文章于 2024-03-01 11:37:58 发布