码迷,mamicode.com
首页 > 其他好文 > 详细

[模板] 多项式全家桶

时间:2019-07-10 11:01:59      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:迭代   rac   bsp   而且   多项式   助理   nlogn   消失   展开   

注意:以下所有说明均以帮助理解模板为目的,不保证正确性。

 

多项式求逆

已知$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(\frac{1}{x})$,等价于把F(x)的系数翻转,记做$F_R(x)$

于是有$$x^nA(x)=x^{n-m}R(x)x^{m}B(x)+x^{n-m+1}x^{m-1}Q(x)$$

$$A_R(x)=R_R(x)B_R(x)+x^{n-m+1}Q_R(x)$$

把它放到$mod\ x^{n-m+1}$下,可以发现$Q(x)$消失了,而且对$R(x)$没有影响

于是有$R_R(x)=\frac{A_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))+\frac{G^{(1)}(F_0(x))}{1!}(F(x)-F_0(x))+\frac{G^{(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)-\frac{G(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)=\frac{H_0^2(x)+F(x)}{2H_0(x)}\ (mod\ x^n)$,倍增即可

复杂度$T(n)=T(n/2)+O(nlogn)=O(nlogn)$

 

[模板] 多项式全家桶

标签:迭代   rac   bsp   而且   多项式   助理   nlogn   消失   展开   

原文地址:https://www.cnblogs.com/Ressed/p/11161918.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!