洛谷P4238 模板 多項式求逆

2021-08-15 18:48:18 字數 1034 閱讀 8325

題目傳送門:

題目分析:放個板子在blog上,以後複習的時候用。

注意每一次呼叫poly_rev()的時候都要重新計算一遍rev陣列,而且要先清0。

求modxm

modx

m下的逆元的時候,注意ntt的次數界要開到2m,因為a(

x)g2

(x) a(x

)g2(

x)

的次數界加起來為m+

m2+m

2−2=

2m−2

m +m

2+m2

−2=2

m−2。

這份板子看起來跑得還挺快的。

code:

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn=1000100;

const

long

long m=998244353;

const

long

long g=3;

typedef

long

long ll;

ll a[maxn];

ll b[maxn];

int rev[maxn];

int n,lg;

ll g[maxn];

ll f[maxn];

int n;

ll pow(ll x,ll y)

void dft(ll *a,int f)

dft(a,1);

dft(b,1);

for (int i=0; i1);

ll inv=pow(n,m-2);

for (int i=0; ivoid poly_rev(int m)

洛谷P4238 模板 多項式乘法逆

給定乙個多項式 f x 請求出乙個多項式 g x 滿足 f x g x equiv 1 mathrm x n 係數對 998244353 取模。n leq 10 5 假設我們已經知道了 f x g x equiv 1 pmod 考慮如何推廣到 f x g x equiv 1 pmod 首先顯然有 g...

luoguP4238 模板 多項式求逆

令 b x 表示 a x 在 x 下的逆 那麼有 b x 2b x ab x 遞迴一下即可 在 len 1 時直接對常數項求逆即可 這裡一定要注意!取逆的時候是預設 x 的,所以如果在多項式後面多加幾個 0 的話逆是會變的!因為模數改變了!code include include include i...

Luogu 4238 模板 多項式求逆

瘋狂補板中。考慮倍增實現。假設多項式只有乙個常數項,直接對它逆元就可以了。現在假如要求 g x f x g x equiv 1 mod x n 而我們已經求出了 h x f x h x equiv 1 mod x right rceil 兩式相減,f x g x h x equiv 0 mod x ...