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)\)参考代码

posted @ 2025-05-28 09:15  喵仔牛奶  阅读(41)  评论(2)    收藏  举报