35 while(n%2==0) n>>=1,divide_max++;
36 roots=vector<ll>(divide_max+1);
37 inv_roots=vector<ll>(divide_max+1);
38 roots[0]=inv_roots[0]=1;
39 for(
int i=1; i<=divide_max; i++) {
40 roots[i]=ModPow(primitive_root,(MOD-1)/(1<<i),MOD);
41 inv_roots[i]=ModInv(roots[i],MOD);
48 while(n+1<a.size()+b.size()) n<<=1;
51 vector<ll> fa(n), fb(n);
52 for(
int i=0; i<a.size(); i++) fa[i]=a[i];
53 for(
int i=0; i<b.size(); i++) fb[i]=b[i];
56 for(
int i=0; i<n; i++) (fa[i]*=fb[i])%=MOD;
59 while(fa.size()+1>a.size()+b.size()) fa.pop_back();