求
∑ni=1ik,给定k<=2000与n<=1018 。
设
f(k)=∑ni=1ik
大致思路是用
∑ni=1(i+1)k
与其用二项式展开化简后的式子,两边同时减去f(k)。类似等比数列的方法。
∑ni=1(i+1)k−f(k)=(n+1)k−1
同时
∑ni=1(i+1)k−f(k)=∑k−1j=0Cjk∗f(j)
联立二式 (n+1)k−1=∑k−1j=0Cjk∗f(j) ,将f(k-1)单独提出,发现等式另一侧只需要用到1..k-2的f.(这一步比较坑,用的是f(k)化简,求的是(f(k-1).)
f(k)=(n+1)k+1−1−∑k−1i=0Cik+1∗f(i)k+1
.
然后我们就可以用
k2
的方法去解决这个问题了。当然组合数需要预处理。