多項式模板

2021-09-05 15:24:02 字數 3905 閱讀 4538

檢查資料:

input:

61 2 3 4 5 6

1.ntt多項式求逆

#include

#define maxn 2100005

#define ll long long

#define mod 998244353

using

namespace std;

int lg[maxn]

,r[maxn]

,w[maxn]

=,wlen;

intpow

(int base,

int k)

inline

void

ntt(

int a[maxn]

,int n,

int tp)

//n=2^k

if(tp==-1

)for

(int i=

0,inv=

pow(n,mod-2)

;i) a[i]

=1ll

*a[i]

*inv%mod;

}void

inv(

int a[maxn]

,int b[maxn]

,int n)

}int a[maxn]

,b[maxn]

;int

main()

output:

2.多項式除法:

感覺我好短啊。

#include

#define maxn 2100005

#define ll long long

#define mod 998244353

using

namespace std;

int lg[maxn]

,r[maxn]

,w[maxn]

=,wlen;

intpow

(int base,

int k)

inline

void

ntt(

int a[maxn]

,int n,

int tp)

//n=2^k

if(tp==-1

)for

(int i=

0,inv=

pow(n,mod-2)

;i) a[i]

=1ll

*a[i]

*inv%mod;

}void

mul(

int a[maxn]

,int b[maxn]

,int c[maxn]

,int n,

int m)

void

inv(

int a[maxn]

,int b[maxn]

,int n)

}void

div(

int a[maxn]

,int b[maxn]

,int c[maxn]

,int r[maxn]

,int n,

int m)

void

init

(int n)

int a[maxn]

,b[maxn]

,c[maxn]

,r[maxn]

;int

main()

3.多項式exp

ac code:(ps : 一旦到了需要多次呼叫函式的時候很多細節(清零)問題就出來了,以上的**好像都沒有考慮的說。。。。。。求逆,求lnln

ln,求e xp

expex

p都以本**為準)

63行還是有點短的說。

#include

#define maxn 300005

#define mod 998244353

using

namespace std;

int lg[maxn]

,r[maxn]

,w[maxn]

=,wlen,inv[maxn]=;

intpow

(int base,

int k)

void

init

(int n)

inline

void

ntt(

int*a,

int n,

int tp)

if(tp==-1

)for

(int i=

0,inv=

pow(n,mod-2)

;i) a[i]

=1ll

*a[i]

*inv%mod;

}void

inv(

int*a,

int*b,

int n)

}void

cln(

int*a,

int*b,

int n)

void

exp(

int*a,

int*b,

int n)

}int a[maxn]

,b[maxn]

;int

main()

4多項式開根

#include

#define maxn 300005

#define mod 998244353

using

namespace std;

int w[maxn]

=,lg[maxn]

,r[maxn]

,wlen;

intpow

(int base,

int k)

void

init

(int n)

inline

void

ntt(

int*a,

int n,

int tp)

void

inv(

int*a,

int*b,

int n)

}void

sqt(

int*a,

int*b,

int n)

}int n,m;

int a[maxn]

,b[maxn]

,c[maxn]

,d[maxn]

;int

main()

5.多項式求冪

有3種演算法:(後兩種只能玩整數冪)

1.多項式exp o(n

log⁡n)

∗30

o(n \log n) * 30

o(nlogn)

∗302.多項式快速冪,每層3次fft t(n

)=t(

n/2)

+o(l

en

log⁡le

n),實

際是o(

le

nlog⁡l

en

log⁡n)

t(n) = t(n/2) + o(len \log len),實際是o(len \log len \log n)

t(n)=t

(n/2

)+o(

lenlogle

n),實

際是o(

lenlogle

nlogn)

3.多項式快速冪,ntt後對每個數單獨進行快速冪然後再ntt回來。o(n

log⁡n)

o(n \log n)

o(nlogn)

關於這3者的區別可以看這篇部落格

codeforces 1096g lucky tickets

多項式 多項式跑飛快 石室中學秘傳模板

終於把多項式板子打完啦!最後補充一點三角函式的芝士 求cos f cos f cosf 與sin f sin f sinf 想到偉大的尤拉公式!e i cos i sin e cos theta i sin theta e i cos i sin theta 看成多項式一樣的 推柿子得到 cos f...

多項式取模 模板

最近想寫一下多項式取模的模板,然而找不到模板題。於是上網找了個高精度除法題,寫完之後才發現高精度除法和多項式取模是不一樣的qaq。前者要求不能出現負數,為此某些位置可以暫時為0,將餘數拉到後面 而多項式取模則要求最高項一定要剩餘0。於是我把程式隨便改了改,先扔在這兒,以後備忘。我寫的是實數 fft ...

模板 多項式乘法(FFT)(NTT)

給定乙個n次多項式f x f x 和乙個 m m 次多項式g x role presentation style position relative g x g x 請求出f x f x 和g x g x 的卷積。fft看了很久很久才看懂,總是看懂了後面的就忘記了前面的 累啊 include def...