Re 多項式求逆

2021-09-11 22:46:20 字數 1048 閱讀 6973

emmm暫無

顧名思義 就是求出乙個多項式的摸xn時的逆

給定乙個多項式f(x),請求出乙個多項式g(x),滿足f(x)∗g(x)≡1(modxn

),係數對998244353取模。

我們考慮用遞推的做法

假設我們當前已知f(x)h(x)=1(mod xi/2)

要求的是f(x)q(x)=1(mod xi

)因為f(x)q(x)=1(mod xi

)所以f(x)q(x)=1(mod xi/2

)可得f(x)(q(x)-h(x))=0(mod xi/2)

顯然可得q(x)-h(x)=0(mod xi/2)

將上述式子兩邊平方得h(x)2-2q(x)h(x)+q(x)2=0(mod xi)

再將兩邊同時乘上f(x)

因為f(x)q(x)=1(mod xi

)所以得f(x)h(x)2-2h(x)+q(x)=0(mod xi)

移項最後得求的g(x)=2h(x)-f(x)h(x)2(mod xi)

那麼就可以遞推了

初始狀態顯然為i等於1的情況g(0)為f(0)的逆元

#includeusing namespace std;

#define ll long long

#define c getchar()-48

inline ll read()

const ll p=998244353,g=3,n=2100000; ll n; ll rev[n]; ll a[n],b[n],c[n]; inline ll ksm(ll a,ll b) return ans; } inline void ntt(ll *a,ll n,ll kd) { for(ll i=0;i>1,a,b); ll len=0,sum=1; for(;sum<(deg<<1);sum<<=1,len++); for(ll i=1;i>1]>>1)|((i&1)<<(len-1)); for(ll i=0;i

posted @

2019-03-04 21:45

1436177712 閱讀(

...)

編輯收藏

多項式求逆

你可能覺得這篇部落格很像網上的另一篇,我會告訴你我是抄的無可奉告 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...

多項式求逆

問題 求多項式 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 ...