RT
简单多项式带余除法。
样例过不去,但是找不到为什么QAQ
NTT(*f,n) 是将 n=2k−1 次多项式 f 进行快速数论变换
IV(*f,n,*g) 是在 modxn 意义下求 f 的逆放进 g 中。
TM(*f,n,*g,m,*p,u=-1) 是将 n 次多项式 f 和 m 次多项式 g 相乘得到的结果放进 p 中同时对 xu 取模,如果 u=−1 则不取模。
以下是我的带余除法(求大神帮帮QWQ
inline void mo(int *f,int n,int *g,int m,int *p,int *q){
reverse(f,f+n+1);
reverse(g,g+m+1);
IV(g,n-m+1,tmp);
TM(f,n,tmp,n-m+1,p,n-m+1);
reverse(p,p+n-m+1);
for(int i=0;i<=n-m;i++)
tmp[i]=0;
reverse(f,f+n+1);
reverse(g,g+m+1);
TM(g,m,p,n-m,tmp,m);
for(int i=0;i<=m-1;i++)
q[i]=(f[i]-tmp[i]+M)%M;
}