FFT模板 生成函式 原根 多項式求逆 多項式開根

2022-08-14 01:33:17 字數 2920 閱讀 5278

fft

1 #include2 #include3 #include4 #include5 #include6 #include7

#define maxn 1000005

8using

namespace

std;

9 inline int

read()

15double pi=acos(-1.0

);16

struct

complex

19 complex operator +(const complex b) const

20 complex operator -(const complex b) const

21 complex operator *(const complex b) const

22}a[maxn],b[maxn];

23int

n,m;

24int limit=1

,l,pos[maxn];

25void fft(complex *a,int

tp) 36}

37}38return;39

}40intmain()

fft生成函式

小a有ai個價值為ai的物品,小b有bi個價值為ai的物品,求用兩個組成價值為ci的方案數

生成函式可以解決上面的這個問題,構造兩個多項式,第x的ai次方項的係數表示價值為i的物品有多少個,對兩個人分別構造,乘在一起的多項式就代表所有的方案數。

定義p的原根為滿足gϕ

(p)≡

1(modp

)'>的整數g。 

gϕ(

p)≡1

(modp)

'>ntt

1 #include2 #include3 #include4 #include5 #include6 #include7

#define maxn 4000001

8#define mod 998244353

9#define ll long long

10using

namespace

std;

11 inline int

read()

17ll a[maxn],b[maxn],pos[maxn];

18 ll n,m,limit=1,l,g=3;19

ll power(ll x,ll y)

25return

ans;26}

27void ntt(ll *a,int

tp) 39}

40}41if(tp==-1

) 45}46

intmain()

ntt多項式求逆

1 #include2 #include3 #include4 #include5 #include6 #include7

#define ll long long

8#define mod 998244353

9#define maxn 1000000

10using

namespace

std;

11 inline int

read()

17 ll g=3,limit=1

,l,n;

18ll a[maxn],b[maxn],pos[maxn],c[maxn];

19ll power(ll x,ll y)

25return

ans;26}

27void ntt(ll *a,int

tp) 39}

40}41if(tp==-1

) 45}46

intd[maxn];

47void inv(int step,ll *a,ll *b)

49 inv((step+1)>>1

,a,b);

50 l=0,limit=1;51

while(limit<=(step<<1)) limit<<=1,l++;

52for(int i=0;i>1]>>1)|((i&1)<

));53

for(int i=0;ia[i];

54for(int i=step;i0

;55 ntt(c,1);ntt(b,1

);56

for(int i=0;imod;

57 ntt(b,-1

);58

for(int i=step;i0;59

}60intmain()

多項式求逆

多項式開根

1

void getsqr(ll *a,ll *b,ll len)

3 getsqr(a,b,(len+1)>>1

);4 memset(invb,0,sizeof

(invb));

5getinv(b,invb,len);

6 l=0,limit=1;7

while(limit<=(len<<1)) limit<<=1,l++;

8for(int i=0;i>1]>>1)|((i&1)<

));9

for(int i=0;ia[i];

10for(int i=len;i0

;11 ntt(invb,1);ntt(c,1);ntt(b,1

);12

for(int i=0;imod;}

13 ntt(b,-1

);14

for(int i=len;i0

;15 }

view code

多項式求逆與多項式開根

閒著沒事幹研究些黑科技 霧 求 a x b x 1 mod x n 其中n為a x b x 的度的較大值 已知a x 求b x b x a x 1 mod x n 假設n 1,則b x a x 常數項在mod p 意義下的的逆元 假設n 1 已知 a x b x 1 mod x n 2 a x b ...

模板 多項式求逆

蒟蒻寫題解實在不易 多項式最高次數為度,多項式 a 的度記為 deg a 多項式取模的意義 將多項式 a 記作余式 a x q x b x r x 則 a x equiv r x mod b x 在有模數 mod 的情況下,f x g x equiv 1 mod x n 的具體情況 f x g x ...

P3803 FFT求多項式係數

傳送門 這是一道fft模板題,求多項式係數 對a和b的係數求乙個fft,轉換為點乘式後 o n 掃一遍直接算係數即可 對於多項式相加 begin,y right left x y right ldots left x y right y right left x y right ldots left...