多(少)项式快速幂

对一个多项式(A)的快速幂可以在(O(nlog_2n))的时间内计算多项式模(x^n)的乘方。
如果多项式的项数(m)较少,则我们有一个(O(nm))的算法。
((A^k(x))'=kA^{k-1}(x)A'(x))
(A^k(x)'A(x)=kA^k(x)A'(x))
([x^n]A^k(x)'A(x)=[x^n]kA^k(x)A'(x)=sum_{i=0}^n(i+1)res_{i+1}a_{n-i}=ksum_{i=0}^n(i+1)a_{i+1}res_{n-i})
发现我们只需要求得([x^n])
(G(x)=A^k(x))
解得([x^{n+1}]G(x)=frac{ksum_{i=0}^{m-1}(i+1)a_{i+1}[x^{n-i}]G(x)-sum_{i=n-m}^{n-1}(i+1)[x^{i+1}]G(x)a_{n-i}}{(n+1)a_0})
这样子,我们使用(O(m))的代价由之前的项递推计算了(G[x^{n+1}]G(x))
时间复杂度(O(nm))

原文地址:https://www.cnblogs.com/ctmlpfs/p/14532949.html