多项式求逆
给定\(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\)是直接可以用三角函数算,直接乘可能有精度问题