自然数幂和
给你一个 K K K,现在有 Q Q Q组询问,每一组询问给出一个 N N N,求:
∑ i = 1 n i k \sum_{i=1}^ni^k i=1∑nik
由于答案太大,所以要对 1 0 9 + 7 10^9+7 109+7取模。
其中: K ≤ 100 , Q ≤ 1 0 5 , 1 ≤ N ≤ 1 0 9 K\leq100,Q\leq10^5,1\leq N\leq10^9 K≤100,Q≤105,1≤N≤109
看到题目的第一眼:好水呀,我用 O ( N Q log K ) O(NQ\log K) O(NQlogK)就能过了
恭喜你,程序大概运行81天就可以运行完了……(记得开 O 2 O2 O2哟)
如果你用 O ( N log K + Q ) O(N\log K+Q) O(NlogK+Q)的话依然会超时,只不过运行时间还是减少了不少……
行吧,来点正经的,这一题其实是一个拉格朗日差值的题目。
大胆猜想 ∑ i = 1 n i k \sum_{i=1}^ni^k ∑i=1nik是一个 k + 1 k+1 k+1次多项式。
好了,接下来证明一下:
证明:
设 F k ( n ) = ∑ i = 1 n i k F_k(n)=\sum_{i=1}^ni^k Fk(n)=∑i=1nik
显然,当 k = 0 k=0 k=0时是一个一次多项式,当 k = 1 k=1 k=1时这是一个二次多项式。
为了方便,设 p = k + 2 p=k+2 p=k+2
考虑 G ( i ) = ( i + 1 ) p − i p = ∑ j = 0 p − 1 C p j