多项式——乘法逆元
给定一个多项式 F ( x ) F(x) F(x) ,请求出一个多项式 G ( x ) G(x) G(x) 满足 F ( x ) G ( x ) ≡ 1 m o d x n F(x)G(x) \equiv 1 \mod x^n F(x)G(x)≡1modxn 。系数对 998244353 998244353 998244353 取模。
本文只介绍递推的方法,首先将 n n n 补齐到 2 的幂次,当 n = 1 n = 1 n=1 的时候,多项式中只有一项,那么 [ x 0 ] G ( x ) [x^0]G(x) [x0]G(x) 就是 [ x 0 ] F ( x ) [x^0]F(x) [x0]F(x) 的乘法逆元。
假设我们已知 F ( x ) H ( x ) ≡ 1 m o d x n 2 F(x)H(x) \equiv 1 \mod x^{\frac{n}{2}} F(x)H(x)≡1modx2n ,那么显然 F ( x ) G ( x ) ≡ 1 m o d x n 2 F(x) G(x) \equiv 1 \mod x^{\frac{n}{2}} F(x)G(x)≡1modx2n ,那么 F ( x ) [ G ( x ) − H ( x ) ] ≡ 0 m o d x n 2 F(x)[G(x) - H(x)] \equiv 0 \mod x^{\frac{n}{2}}

这篇博客介绍了如何使用快速傅里叶变换(NTT)来高效地计算多项式在模意义下的乘法逆元。通过递归方法,将问题规模减半,并利用平方和差的性质,最终给出一个多项式的乘法逆元计算公式。文章以C++代码实现了一个NTT类,用于进行NTT和逆NTT操作,从而在O(nlogn)的时间复杂度内完成计算。
最低0.47元/天 解锁文章
530

被折叠的 条评论
为什么被折叠?



