mlg的多項式全家桶

2022-08-18 22:51:12 字數 2397 閱讀 9281

首先,我們有這樣的兩個式子:$$快速傅利葉卷積式: f(\omega_^)=fl(\omega_^)+\omega_^fr(\omega_^)$$

$$牛頓迭代式:已知g(f(x))=0,則f(x)=f_(x)-\frac(x))}(f_(x))}$$

根據快速傅利葉卷積式,我們可以構造出多項式乘法模型.在多項式乘法的基礎上,根據牛頓迭代式,我們可以推導出多項式的其它運算.

已知多項式$h(x)$, 求$f(x)$使得$f(x)\cdot h(x) \equiv 1(\mod 998244353)$.

先構造出復合多項式$ g(f(x))=\frac-h(x) $ ,然後根據牛頓迭代式得到:$$f(x)=f_(x)-\frac^(x)-h(x)}^(x)}=f_(x)[2-f_(x)\cdot h(x)]$$ 據此牛頓迭代即可,邊界為$f[0]=inv(h[0])$

時間複雜度$$t(n)=t(n/2)+\omicron(n\log n)=\omicron(n\log n)$$

已知多項式$h(x)$,求$f(x)$使得$f^(x) \equiv h(x) (\mod 998244353)$(其中$h[0]$為模998244353下的二次剩餘).

先構造復合多項式$ g(f(x))=f^(x)-h(x)$ ,然後根據牛頓迭代式得:$$f(x)=f_(x)-\frac^-h(x)}(x)}=2^[f_(x)+h(x) \cdot f^(x)]$$ 

邊界為$f[0]=x_$,其中$x_$為二次剩餘方程$x_^\equiv h[0](\mod 998244353)$的解,可以運用$cipolla$演算法求出.

時間複雜度$$t(n)=t(n/2)+\omicron(n\log n)=\omicron(n\log n)$$

給定乙個$n$次多項式$f(x)$和乙個$m$次多項式$g(x)$,請求出多項式$q(x)$,$r(x)$,滿足以下條件:

所有運算在模998244353意義下進行.

此題操作起來比較麻煩.首先對乙個度為$n$的多項式$f(x)$,我們構造多項式$f^(x)=x^f(\frac)$,不難看出$f^(x)$與$f(x)$各項係數相反.

考慮原式,我們在兩邊同時將主元$x$換成$x^$,然後同時乘上$x^$,即$$x^f(\frac)=x^g(x)x^q(x)+x^x^r(x)$$

於是有$f^(x)=g^(x)q^(x)+x^r^x$,然後對$x^$取模消除餘數的影響,於是就有$q^(x)=f^(x)g^}(x)$,剩下的憑直覺去ntt即可.

給定乙個$n$次多項式$h(x)$,求多項式$f(x)$使得$f(x)\equiv \ln h(x) (\mod 998244353)$.

由於對數函式的反函式是指數函式,而指數函式又不是我們熟悉的型別,於是此時牛頓迭代不再適用,我們可以換一種思路.

觀察到對數函式的導函式$(\ln x)^=\frac$,我們已知$\ln(h(x))=f(x)$,然後對其求導,得到$f^(x)=\frac(x)}$,然後求個導取個逆積個分就可以啦!

至此,我們成功地把陌生的多項式對數函式轉換成熟悉的多項式求導積分乘法逆,式子如下:$$f(x)=\int(h^(x)h^(x))$$

給定乙個$n$次多項式$h(x)$,求多項式$f(x)$使得$f(x) \equiv e^(\mod 998244353)$

上面我們已經求出了指數函式的反函式——對數函式,於是我們可以直接構造$g(f(x))=\ln f(x)-h(x)$,然後牛頓迭代得到$$f(x)=f_(x)-\frac(x)+h(x)}^(x)}=f_(x)[1-ln f_(x)+h(x)]$$

時間複雜度$$t(n)=t(n/2)+\omicron(n\log n)=\omicron(n\log n)$$

多項式三角函式,這裡主要推導$sin$和$cos$.

首先,根據尤拉公式,有$e^=\cos x +i\sin x$,同時有$e^=\cos x -i\sin x$.

然後加減消元,即可得出$$\sin x=\frac-e^}$$ $$\cos x=\frac+e^}$$

然後在數論裡,就是求個$exp$的事了呀!值得注意的是,我們有$i^ \equiv -1 \equiv 998244352 ( \mod 998244353)$,所以$i \equiv \sqrt ( \mod 998244353)$,然後就是乙個$cipolla$求二次剩餘解的事了.

多項式反三角函式,這裡我們主要推導$arcsin$和$arctan$

這兩個也不是我們所熟悉的,但模擬我們推導對數函式的思路,我們同樣可以將這兩個函式轉化成求導+積分的形式.

首先,我們有$$\frac arcsin x=\frac}}$$ $$\fracarctan x=\frac}$$

這不就是乙個多項式加法卷積開根求逆的事了嗎?

最後再積個分就行了.具體式子如下:$$h(x)=\arcsin f(x)=\int(\frac(x)}})$$ $$h(x)=\arctan f(x)=\int (\frac(x)})$$

終!

多項式全家桶

眾所周知,生成函式是乙個十分強大的東西,許多與多項式相關的演算法也就應運而生了,在這裡選取幾種較為簡單的演算法做乙個介紹.p.s.這篇文章在去年noi前已經完成了一半,現在筆者將其補充完整後發出,同時也為了紀念那一段美好的時光。已知 f x 求 g x 使得 f x g x equiv 1 mod ...

多項式全家桶

已知多項式 g x 求 f x 滿足 g f x equiv 0 pmod 假設我們有乙個 f 0 x 滿足 g f 0 x equiv 0 pmod rceil 由定義可知 f x f 0 x equiv 0 pmod rceil rightarrow forall k ge 2,left f x...

多項式全家桶

include include includeusing namespace std const double pi acos 1.0 const int maxn 1e7 5 inline int read int n,m,len,lim 1 int r maxn struct complex c...