下文及代码中所有提及某个函数是以n为界或者是n次的,意思是其最高次项次数 n − 1 n-1 n−1。
关于求逆,由牛顿迭代: F = G − 1 F n + 1 = 2 F n − F n 2 G F=G^{-1}\\F_{n+1}=2F_n-F_n^2G F=G−1Fn+1=2Fn−Fn2G
关于多项式取模,A(x)以n为界,B(x)以m为界,需要求C(x)和D(x),使得C(x)的界是n-m+1,D(x)的界是m-1:
A ( x ) = B ( x ) C ( x ) + D ( x ) x n − 1 A ( 1 x ) = ( x m − 1 B ( 1 x ) ) ( x n − m C ( 1 x ) ) + x n − 1 D ( 1 x ) A(x)=B(x)C(x)+D(x)\\x^{n-1}A\left(\frac 1x\right)=\left(x^{m-1}B\left(\frac 1x\right)\right)\left(x^{n-m}C\left(\frac1x\right)\right)+x^{n-1}D\left(\frac 1x\right) A(x)=B(x)C(x)+D(x)xn−1A(x1)=(xm−1B(x1))(xn−mC(x1))+xn−1D(x1)
注意到 x n − 1 D ( 1 x ) m o d x n − m + 1 = 0 x^{n-1}D\left(\frac 1x\right)\bmod {x^{n-m+1}}=0 xn−1D(x1)modxn−m+1=0,因此(设 A T n ( x ) A^{T_n}(x) ATn(x)表示将 A ( x ) A(x) A(x)以 n n n为界翻转):
A T n ( x ) = B T m ( x ) C T n − m + 1 ( x ) ( m o d x n − m + 1 ) C T n − m + 1 ( x ) = A T n ( x ) ( B T m ( x ) ) − 1 A^{T_{n}}(x)=B^{T_{m}}(x)C^{T_{n-m+1}}(x)\pmod {x^{n-m+1}}\\ C^{T_{n-m+1}}(x)=A^{T_{n}}(x)\left(B^{T_{m}}(x)\right)^{-1} ATn(x)=BTm(x)CTn−m+1(x)(modxn−m+1)CTn−m+1(x)=ATn(x)(BTm(x))−1
因此可以求出 C C C,再通过一次乘法求出D即可。
多项式多点求值:
现在有一个以 n n n为界的多项式 A ( x ) A(x) A(x),以及 m m m个位置 x 1 , … , x m x_1,\dots,x_m x1,…,xm,求 A ( x 1 ) , … , A ( x m ) A(x_1),\dots,A(x_m) A(x1),