题意:
求: ∑ni=1fiqi(n≤1e18,deg(fi)≤5e5) ∑ i = 1 n f i q i ( n ≤ 1 e 18 , d e g ( f i ) ≤ 5 e 5 )
题解:
这道题有弱化版:BZOJ4126
也有弱化版的弱化版:BZOJ3516
我写了后者的题解:传送门
因为这是一般形式,所以前者的题解就直接忽略了,可以用一般形式解决。
先说明,因为这道 codechef 题的模数不是质数且范围达到 1e18 1 e 18 ,所以本题解的代码并过不了,题解的代码是在 (mod1e9+7) ( mod 1 e 9 + 7 ) 的意义下求解的。
以下的 k k 均为多项式的次数,且
均不为1 ( q q 为1可以直接特判)。
先说一个很神奇的
插值法,这个方法是先猜结论再做证明的,所以并不推荐。后面有 O(klogk) O ( k log k ) 的一般方法。
插值法
记 Sn=∑n−1i=0fiqi S n = ∑ i = 0 n − 1 f i q i ,有结论:
Sn=qngn−g0 S n = q n g n − g 0
其中 g(x) g ( x ) 为关于 x x 的 次多项式。
这个结论可以通过归纳法证明。
我们分别来证明当 fi=ij f i = i j 时这个式子成立即可。
j=0 j = 0 显然成立。
j=k−1 j = k − 1 成立,那么
Sn,k=qSn,k=(q−1)Sn,k=∑i=0n−1ikqi∑i=1n(i−1)kqi(n−1