inline poly operator * (poly a,poly b) {
int n=a.size(),m=b.size(),t=n+m-1;
if(n<=30||m<=30) {
poly c(t);
for(int i=0,res;i<n;++i) if((res=a[i]))
for(int j=0;j<m;++j) pls(c[i+j],mul(res,b[j]));
return c;
}
init_r(t);
a.rez(lim),NTT(a,1),
b.rez(lim),NTT(b,1);
for(int i=0;i<lim;++i) a[i]=mul(a[i],b[i]);
return NTT(a,-1),a.rez(t),a;
}
当不跑暴力的答案和跑暴力的不一样。
而且当 30 换成其他值的时候跑出来的也不一样。
心态崩了,求助 /kel