多项式算法5:多项式求逆
多項式算法5:多項式求逆
- 多項式求逆
前置知識:
FFT
NTT
多項式求逆
這里的多項式求逆,其實是求多項式的逆元。
對于多項式A(x)A(x)A(x),如果存在A(x)B(x)≡1(modxn)A(x)B(x) \equiv 1( \mod x^n )A(x)B(x)≡1(modxn),那么我們稱B(x)B(x)B(x)為A(x)A(x)A(x)在模xnx^nxn意義下的逆元。
這里的模xnx^nxn是指舍棄所有xxx的次數大于等于nnn的項,當然也可以理解為所有xxx的次數大于等于nnn的項的系數賦為零。
例如,多項式x4+4x3+6x2+4x+1x^4+4x^3+6x^2+4x+1x4+4x3+6x2+4x+1對x3x^3x3取模后變為6x2+4x+16x^2+4x+16x2+4x+1。
當A(x)B(x)≡1(modxn)A(x)B(x) \equiv 1( \mod x^n )A(x)B(x)≡1(modxn),表示A(x)A(x)A(x)和B(x)B(x)B(x)在模xnx^nxn的意義下相乘得到的多項式,只有常數項為111,其它項的系數均為000。
小結論:如果滿足A(x)B(x)≡1(modxn)A(x)B(x) \equiv 1( \mod x^n )A(x)B(x)≡1(modxn),那么對于1≤m<n1 \le m \lt n1≤m<n,A(x)B(x)≡1(modxm)A(x)B(x) \equiv 1( \mod x^m )A(x)B(x)≡1(modxm)也成立。
證明:不難發現由于A(x)B(x)≡1(modxn)A(x)B(x) \equiv 1( \mod x^n )A(x)B(x)≡1(modxn),表示A(x)B(x)A(x)B(x)A(x)B(x)的多項式的xxx的111到n?1n-1n?1次方項系數原本就均為000,xxx的nnn次方及更高次項已被強行賦了一個系數000。當模xm(1≤m<n)x^m(1 \le m \lt n)xm(1≤m<n)時,xxx的mmm到n?1n-1n?1次方項系數本來就為零,強行賦零后也不影響結果的正確性。
這相當于3%53 \% 53%5和3%63 \% 63%6結果一樣。
下面就是推導時間了。
我們設B(x)B(x)B(x)為A(x)A(x)A(x)在模xnx^nxn意義下的逆元,B′(x)B'(x)B′(x)為A(x)A(x)A(x)在模x?n2?x^{\lceil \frac{n}{2} \rceil}x?2n??意義下的逆元,那么有:
A(x)?1≡B(x)(modxn)A(x)^{-1} \equiv B(x)( \mod x^n )A(x)?1≡B(x)(modxn)A(x)?1≡B′(x)(modx?n2?)A(x)^{-1} \equiv B'(x)( \mod x^{\lceil \frac{n}{2} \rceil} )A(x)?1≡B′(x)(modx?2n??)得B(x)≡B′(x)(modx?n2?)B(x) \equiv B'(x)( \mod x^{\lceil \frac{n}{2} \rceil} )B(x)≡B′(x)(modx?2n??)B(x)?B′(x)≡0(modx?n2?)B(x) - B'(x) \equiv 0( \mod x^{\lceil \frac{n}{2} \rceil} )B(x)?B′(x)≡0(modx?2n??)前?n2??1\lceil \frac{n}{2} \rceil - 1?2n???1次項系數均為零,乘方后小于n?1n-1n?1次的項一定有一邊的系數來自前?n2??1\lceil \frac{n}{2} \rceil - 1?2n???1次項,系數也為000 (B(x)?B′(x))2≡0(modxn)(B(x) - B'(x))^2 \equiv 0( \mod x^{n} )(B(x)?B′(x))2≡0(modxn)B(x)2?2B(x)B′(x)+B′(x)2≡0(modxn)B(x)^2 - 2B(x)B'(x) + B'(x)^2 \equiv 0( \mod x^{n} )B(x)2?2B(x)B′(x)+B′(x)2≡0(modxn)乘上A(x)A(x)A(x),有:A(x)B(x)B(x)?2A(x)B(x)B′(x)+A(x)B′(x)B′(x)≡0(modxn)A(x)B(x)B(x) - 2A(x)B(x)B'(x) + A(x)B'(x)B'(x) \equiv 0( \mod x^{n} )A(x)B(x)B(x)?2A(x)B(x)B′(x)+A(x)B′(x)B′(x)≡0(modxn)因為A(x)B(x)≡1(modxn)A(x)B(x) \equiv 1( \mod x^n )A(x)B(x)≡1(modxn),所以有:B(x)?2B′(x)+A(x)B′(x)B′(x)≡0(modxn)B(x) - 2B'(x) + A(x)B'(x)B'(x) \equiv 0( \mod x^{n} )B(x)?2B′(x)+A(x)B′(x)B′(x)≡0(modxn)B(x)≡2B′(x)?A(x)B′(x)B′(x)(modxn)B(x) \equiv 2B'(x) - A(x)B'(x)B'(x) ( \mod x^{n} )B(x)≡2B′(x)?A(x)B′(x)B′(x)(modxn)B(x)≡B′(x)(2?A(x)B′(x))(modxn)B(x) \equiv B'(x)(2 - A(x)B'(x)) ( \mod x^{n} )B(x)≡B′(x)(2?A(x)B′(x))(modxn)
這說明,我們可以通過多項式乘法用B′(x)B'(x)B′(x)求出B(x)B(x)B(x),n=1n=1n=1時直接求常數項逆元,倍增nnn,從小往大即可,時間復雜度為Θ(nlog?2n)\varTheta(n \log^2n)Θ(nlog2n)。
我們的模板題還要求取模,模數998244353998244353998244353十分友好,故我們直接用NTT求解。
多項式求逆模板題
總結
以上是生活随笔為你收集整理的多项式算法5:多项式求逆的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dede教程之后台登录是自动跳出解决方法
- 下一篇: CentOS下载教程