前置知识:泰勒展开,多项式求逆

作用:解自变量为多项式的函数零点(人话:解方程)
已知 G(F(x))0(modxn)
老倍增思路了:
G(F0(z))0(modxn2)
G(F(x))F0(x)处泰勒展开,得:
G(F(x))=G(F0(x))+G(F0(x))1!(f(x)f0(x))+G(F0(x))2!(f(x)f0(x))2+...
因为F(x)F0(x)的最后n2项相同,均为0。
所以(F(x)F0(x))2最低非0项次数大于2n2
因此泰勒公式中平方以后的就被截断了,只剩下前两项:

G(F(x))G(F0(x))+G(F0(x))(F(x)F0(x))(modxn)

又因为:G(F(x))0(modxn)

F(x)F0(x)G(F0(x))G(F0(x))(modxn)

注意这里G的求导是对x的,以后遇到解复合函数方程的,求个倒带入上面的公式就搞定了。

复杂度:T(n)=T(n2)+O(nlog2n)=O(nlog2n)