多项式求逆,除法,开方,任意模数FFT

Posted Cyhlnj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多项式求逆,除法,开方,任意模数FFT相关的知识,希望对你有一定的参考价值。

多项式求逆

给定\(A(x)\)求满足\(A(x)*B(x)=1\)\(B(x)\)

写成
\[A(x)*B(x)=1(mod \ x^n)\]

我们会求\[A(x)*B(x)=1(mod \ x^1)\]

然后我们考虑求\[A(x)*B(x)=1(mod \ x^t)\]

\[(A(x)*B(x)-1)^2=(mod \ x^{2t})\]

\[A(x)(2B(x)-A(x)*B^2(x))=1(mod \ x^{2t})\]

\(2B(x)-A(x)*B^2(x)\)当作新的\(B\)倍增算

\(mod \ x^1\)倍增到大于等于\(n\)

多项式除法

已知\(n\)次多项式\(A(x)\)\(m\)次多项式\(B(x)\)\(n>m\)
\(A(x)\)除以\(B(x)\)的商\(C(x)\)及余式\(D(x)\)

也就是
\[A(x)=B(x)C(x)+D(x)\]
\[A(\frac{1}{x})=B(\frac{1}{x})C(\frac{1}{x})+D(\frac{1}{x})\]
\[x^nA(\frac{1}{x})=(x^mB(\frac{1}{x}))(x^{n-m}C(\frac{1}{x}))+x^{n-m+1}(x^{n-1}D(\frac{1}{x}))\]
\(x^{n-m+1}\)取模
\[A^R(x)=B^R(x)C^R(x)(mod \ x^{n-m+1})\]
\(R\)表示把系数倒置,即\(swap\)前后
那么可以多项式求逆,再相乘得到\(C^R(x)\)
然后去掉\(R\)带入原式相乘再相减得到\(D(x)\)

多项式开方

给定\(B(x)\),求\(A(x)\)使\(A^2(x)=B(x)\)
写成
\[A^2(x)=B(x) (mod \ x^n)\]

然后
\[A^2(x)=B(x)(mod \ x^1)\]
是可以求的,好像是什么二次剩余
留坑在这里以后补

考虑求
\[A^2(x)=B(x)(mod \ x^{2t})\]


\[C^2(x)=B(x)(mod \ x^t)\]

那么

\[(A^2(x)-C^2(x))^2=0(mod \ x^{2t})\]

\[A^4(x)-2A^2(x)C^2(x)+C^$(x)=0(mod \ x^{2t})\]

\[A^2(x)=\frac{A^4(x)+C^4(x)}{2C^2(x)}(mod \ x^{2t})\]

\[2A^2(x)=\frac{A^4(x)+2C^2(x)A^2(x)+C^4(x)}{2C^2(x)}(mod \ x^{2t})\]

\[A^2(x)=\frac{(A^2(x)+C^2(x))^2}{(2C(x))^2}(mod \ x^{2t})\]

\[A(x)=\frac{B(x)+C^2(x)}{2C(x)}(mod \ x^{2t})\]

同样的还是倍增求

任意模数FFT

由于\(NTT\)只能做对\(2^x+1\)这样的质数取模的多项式乘法
对于任意模数,可以这样来做

\(m=\sqrt {mod}\)
把多项式\(A(x)\)\(B(x)\)的系数都拆成\(a*m+b\)的形式,时\(a, b\)都小于\(m\)
提出,那么一个多项式就可以拆成两个多项式的加法
一个是\(a*m\)的,一个是\(b\)
直接乘法分配律,\(aa\)一遍,\(ab\)一遍,\(ba\)\(bb\)一遍,四遍\(FFT\)
乘出来不会超过取模范围
然后合并就和
\[(a*m+b)(c*m+d)=a*c*m^2+(a*c+b*d)m+bd\]
一样
\(FFT\)实数运算,算\(w^k\)是直接可以用三角函数算,直接乘可能有精度问题

以上是关于多项式求逆,除法,开方,任意模数FFT的主要内容,如果未能解决你的问题,请参考以下文章

任意模数NTT(拆系数FFT)

任意模数NTT(拆系数FFT)

洛谷 - P4245 模板任意模数多项式乘法(三模NTT+中国剩余定理/五次FFT的MTT)

NTT+多项式求逆+多项式开方(BZOJ3625)

模板多项式开方

luoguP4512 模板多项式除法 NTT+多项式求逆+多项式除法