25.5.26 闲话:解一个多项式方程
已知 \((1-x)F(x)=F(\frac{x^2}{1-x})\) 且 \([x^0]F(x)=1\),求 \(F\bmod x^n\)。
source:A092684
\(\frac{x^2}{1-x}=\sum_{n\ge 2}x^n\),因此算出 \(F(x)\bmod x^n\) 后,用这些项算 \(\frac{1}{1-x}F(\frac{x^2}{1-x})\),就可以算出前 \(2n\) 项。问题变为如何算 \(\frac{1}{1-x}F(\frac{x^2}{1-x})\)。
设 \(F_R(x)\) 为 \(F(x)\) 前 \(n\) 项系数翻转后的多项式,即 \(f'_i=f_{n-i-1}\)。
\[F\left(\frac{x^2}{1-x}\right)=\left(\frac{x^2}{1-x}\right)^{n-1}F_R\left(\frac{1-x}{x^2}\right)
\]
令 \(y=\frac{1}{x}\),推导后面部分:
\[F_R\left(\frac{1-x}{x^2}\right)=F_R\left(y^2-y\right)=F_R\left((y-\frac{1}{2})^2-\frac{1}{4}\right)
\]
因此:
\[F_R\left(\frac{1-x}{x^2}\right)=F_R\circ(x-\frac{1}{4})\circ(x^2)\circ(x-\frac{1}{2})\circ(\frac{1}{x})
\]
复合 \(x+k\) 和 \(x^k\) 都是容易的,复杂度 \(\mathcal O(n\log n)\)。
具体怎么算?求出 \(F_R(x)\),用连续点值平移可以算出 \(G=F_R\circ(x-\frac{1}{4})\circ(x^2)\circ(x-\frac{1}{2})\)。
\[F(x)=\frac{1}{1-x}F\left(\frac{x^2}{1-x}\right)=\left(\frac{1}{1-x}\right)^nx^{2n-2}G\left(\frac{1}{x}\right)
\]
\(G\) 是最高次是 \(x^{2n-2}\),因此 \(x^{2n-2}G\left(\frac{1}{x}\right)\) 相当于 \(G(x)\) 前 \(2n-1\) 项系数翻转。\(\left(\frac{1}{1-x}\right)^n\) 可以线性算出来,乘上去然后模 \(x^{2n}\) 就算完了。
总复杂度 \(T(n)=T(n/2)+\mathcal O(n\log n)=\mathcal O(n\log n)\)。参考代码。

浙公网安备 33010602011771号