多(少)项式快速幂

对一个多项式\(A\)的快速幂可以在\(O(n\log_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}=k\sum_{i=0}^n(i+1)a_{i+1}res_{n-i}\)
发现我们只需要求得\([x^n]\)
\(G(x)=A^k(x)\)
解得\([x^{n+1}]G(x)=\frac{k\sum_{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)\)

posted @ 2021-03-14 16:22  celerity1  阅读(95)  评论(0编辑  收藏  举报