你可能覺得這篇部落格很像網上的另一篇,我會告訴你我是抄的無可奉告=w=
首先我們來講一些基礎的定義:
多項式的度:就是這個多項式的最高次項的次數,記做deg(a)
對於多項式a(x),b(x),唯一存在多項式q(x),r(x)滿足a(x)=b(x)q(x)+r(x),並且deg(r)< deg(b)
那麼我們稱q(x)為a(x)除以b(x)的商,r(x)稱作餘數,記做a(
x)≡r
(x)mod(b
(x))
對於多項式a(x),b(x),deg(b)<=deg(a),滿足a(
x)b(
x)≡1
mod(xn
) 那麼稱b(x)為a(x)模x^n意義下的逆元
你可以理解成只取前n位的係數,只有常數項是1
這篇文章就是在告訴你如何在o(n log n)的複雜度內對於乙個多項式求逆
沒錯我們就是倍增emmmm
當n=1時,兩個多項式都只有常數項,那麼直接求就好了
當n>1時,假如我們已經求出了b′
(x) 表示a(x)模x^(n/2)的逆
那麼我們有 a(
x)b(
x)≡1
mod(xn
/2)
a(x)
b′(x
)≡1mod(x
n/2)
於是a(
x)(b
(x)−
b′(x
))≡0
mod(xn
/2)
b(x)
−b′(
x)≡0
mod(xn
/2)
兩邊平方,可以發現所得多項式的x^(n/2+1)~x^n項的係數都是0
這個自己畫一畫很好理解 於是b
2(x)
−2b(
x)b′
(x)+
b′2(
x)≡0
mod(xn
) b(
x)−2
b′(x
)+a(
x)b′
2(x)
≡0mod(xn
) b(
x)≡b
′(x)
(2−a
(x)b
′(x)
)mod(x
n)直接fft就可以了
複雜度t(n)=t(n/2)+o(n log n)=o(n log n)
模擬這東西還可以推出多項式開根
然而並不知道什麼題目能用。。。。
多項式求逆
問題 求多項式 g x 滿足 f x g x equiv 1 pmod q1 這是什麼意思?a1 即 f x g x 最後只有常數項係數為 1 其餘係數都為 0 q2 為什麼要求模 x n a2 這是為了將 n 次方以上的項全都除去,否則 g x 會有無窮多項。用倍增的方法可以 o n log n ...
多項式求逆
給定乙個多項式 f x 請求出乙個多項式 g x 滿足 f x times g x equiv 1 mathrmx n 假設我們已經求得了 g 0 x 滿足 f x times g 0 x equiv 1 mathrmx frac 現在求 f x times g x equiv 1 mathrmx ...
多項式求逆
多項式求逆指的是給定乙個多項式 f x 求出乙個多項式 g x 滿足 f x g x equiv1 pmod 我們稱乙個多項式的 度 為其最高次項係數 1 首先,我們知道當 n 1 的時候,顯然 g x 即為 f x 的常數項之逆元 我們將原式寫成模 x 意義下的形式 f x g x equiv1 ...