[模板] 多项式全家桶
Posted ressed
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[模板] 多项式全家桶相关的知识,希望对你有一定的参考价值。
注意:以下所有说明均以帮助理解模板为目的,不保证正确性。
多项式求逆
已知$A(x)$,求满足$A(x)B(x)=1\ (mod\ x^n)$的B(以下为了方便假设n是2的幂)
考虑倍增,假设已经求出$A(x)B_0(x)=1\ (mod\ x^n/2)$
$$A(x)(B(x)-B_0(x))=0\ (mod\ x^n/2)$$
$$(B(x)-B_0(x))=0\ (mod\ x^n/2)$$
$$(B(x)-B_0(x))^2=0\ (mod\ x^n)$$
$$B^2(x)-2B(x)B_0(x)+B_0^2(x)=0\ (mod\ x^n)$$
同乘个A,$$B(x)-2B_0(x)+A(x)B_0^2(x)=0\ (mod\ x^n)$$
$$B(x)=2B_0(x)-A(x)B_0^2(x)\ (mod\ x^n)$$
复杂度$T(n)=T(n/2)+O(nlogn)=O(nlogn)$
多项式除法
已知$A(x)$,$B(x)$,求满足$A(x)=R(x)B(x)+Q(x)$的$R(x)$,$Q(x)$,其中若A为n次,B为m次,则R为n-m次,Q为m-1次
首先考虑一种操作:把$F(x)$变成$x^nF(\frac1x)$,等价于把F(x)的系数翻转,记做$F_R(x)$
于是有$$x^nA(x)=x^n-mR(x)x^mB(x)+x^n-m+1x^m-1Q(x)$$
$$A_R(x)=R_R(x)B_R(x)+x^n-m+1Q_R(x)$$
把它放到$mod\ x^n-m+1$下,可以发现$Q(x)$消失了,而且对$R(x)$没有影响
于是有$R_R(x)=\fracA_R(x)B_R(x)\ (mod\ x^n-m+1)$
所以$R(x)$就可以求了,然后$Q(x)=A(x)-R(x)B(x)$,也可以求了
复杂度$O(nlogn)$
牛顿迭代法
已知$G(f)$,求$G(F(x))=0\ (mod\ x^n)$的一个解$F(x)$(以下为了方便假设n是2的幂)
假设已经求出了$G(F_0(x))=0\ (mod\ x^n/2)$
我们在$F_0(x)$处对$G$进行泰勒展开,有
$$G(F(x))=G(F_0(x))+\fracG^(1)(F_0(x))1!(F(x)-F_0(x))+\fracG^(2)(F_0(x))2!(F(x)-F_0(x))^2+... (mod\ x^n)$$
然后我们发现,因为F_0和F前n/2项相同,所以$(F(x)-F_0(x))^2=0\ (mod\ x^n)$
所以有$$G(F(x))=G(F_0(x))+G‘(F_0(x))(F(x)-F_0(x))=0\ (mod\ x^n)$$
$$F(x)=F_0(x)-\fracG(F_0(x))G‘(F_0(x))\ (mod\ x^n)$$
于是就可以倍增来求F(x)了
多项式开根
已知$G(H(x))=H^2(x)-F(x)$,求使$G(H(x))=0\ (mod\ x^n)$的一个解
根据上面牛顿迭代法的式子可得$H(x)=\fracH_0^2(x)+F(x)2H_0(x)\ (mod\ x^n)$,倍增即可
复杂度$T(n)=T(n/2)+O(nlogn)=O(nlogn)$
以上是关于[模板] 多项式全家桶的主要内容,如果未能解决你的问题,请参考以下文章