今天學習了多項式求逆,總結一下。
這裡是網上好的部落格
給定乙個多項式\(a(x)\),求出多項式\(b(x)\),使\(a(x)b(x) \equiv 1 \pmod\)。
考慮遞推求解,假設我們已經求出\(b'(x)\),使
\[a(x)b'(x) \equiv 1 \pmod \rceil}}
\]又:
\[a(x)b(x) \equiv 1 \pmod
\]所以:
\[b(x)-b'(x) \equiv 0 \pmod \rceil}}
\]將式子兩邊平方,有:
\[b(x)^2-2b(x)b'(x)+b'(x)^2 \equiv 0 \pmod
\]這裡說明為何模數變成了\(n\),設\(g(x)=(b(x)-b'(x))^2\),那麼第\(i\)個係數\(a_i = \sum_^ c_j \times c_\),因為原來在\(0\)至\(} \rceil}\)中係數\(c_i\)均為0,所以每一項其中必然有一項\(c_i\)為0。
那麼我們就得到了遞推式:
\[b(x) \equiv 2b'(x)-a(x) b'(x)^2 \pmod
\]fft優化乘法即可。
時間複雜度:
\[t(n)=t(n/2)+o(nlogn),t(n)=o(nlogn)
\]#include#define n 300005
using namespace std;
const int p=998244353,g=3;
int n,lim,l,a[n],b[n],c[n],r[n];
inline int in()
inline int power(int x,int k)
void ntt(int *a,int op) ^ = \frac= \frac^} }}$。
然後求出下面多項式的逆就可以得到伯努利數了。
例2.bzoj3456 城市規劃(許可權題)
題意:給定$n$,求出$n$個頂點的簡單無向連通圖的個數。
解析:設$f(n)$表示$n$個頂點的簡單無向連通圖的個數,$g(n)$表示$n$個頂點的簡單無向圖的個數,那麼顯然有:
$$g(n)=2^\qquad(1)\]
考慮\(g(n)\)的另一種計算方法,列舉1號點所在連通塊的頂點個數,那麼有:
\[g(n)=\sum_^ c(n-1,i-1)\times f(i) \times g(n-i) \qquad (2)
\]將(1)代入(2),有:
\[2^=\sum_^ c(n-1,i-1)\times f(i) \times 2^
\]兩邊同時除以\((n-1)!\),有:
\[\frac}=\sum_^ \frac}}
\]定義:\(p(x)=\sum_^ \frac x^n\),\(q(x)=\sum_^ \frac} x^n\),\(g(x)=\sum_^ \frac} x^n\)。
那麼據上有:
\[g(x)=p(x)q(x)
\]因為是求\(p(x)\)的第\(n-1\)項係數,考慮這個等式在模\(x^n\)下的意義:
\[g(x) \equiv p(x)q(x) \pmod
\]那麼有:
\[p(x) \equiv g(x)^q(x) \pmod
\]多項式求逆即可。
多項式求逆
你可能覺得這篇部落格很像網上的另一篇,我會告訴你我是抄的無可奉告 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 ...