uoj34 多项式乘法
2017-08-23 20:55
225 查看
传送门
只是存一下板子。
只是存一下板子。
#include<cmath> #include<cstdio> #include<iostream> using namespace std; const int N=3e5+10; const double pi=acos(-1); struct cp { double x,y; cp(){} cp(double xx,double yy):x(xx),y(yy){} inline cp operator +(const cp &other){return cp(x+other.x,y+other.y);} inline cp operator -(const cp &other){return cp(x-other.x,y-other.y);} inline cp operator *(const cp &other){return cp(x*other.x-y*other.y,y*other.x+x*other.y);} inline double real(){return x;} }a ,b ; int r ; int n,m,x,len; inline void FFT(cp *a,int f) { for(int i=0;i<n;i++) if(i<r[i]) swap(a[i],a[r[i]]); for(int i=1;i<n;i<<=1) { cp wn(cos(pi/i),f*sin(pi/i)); for(int j=0,tmp=i<<1;j<n;j+=tmp) { cp w(1,0); for(int k=0;k<i;k++,w=w*wn) { cp x=a[j+k],y=w*a[j+k+i]; a[j+k]=x+y,a[j+k+i]=x-y; } } } } int main() { scanf("%d%d",&n,&m); for(int i=0;i<=n;i++) scanf("%d",&x),a[i].x=x; for(int i=0;i<=m;i++) scanf("%d",&x),b[i].x=x; m+=n; for(n=1;n<=m;n<<=1) len++; for(int i=0;i<n;i++) r[i]=(r[i>>1]>>1)|((i&1)<<(len-1)); FFT(a,1),FFT(b,1); for(int i=0;i<=n;i++) a[i]=a[i]*b[i]; FFT(a,-1); for(int i=0;i<=m;i++) printf("%d ",(int)(a[i].real()/n+0.5)); return 0; }
#include<cmath> #include<cstdio> #include<complex> #include<iostream> using namespace std; typedef complex<double> cp; const int N=3e5+10; const double pi=acos(-1); int r ; int n,m,x,len; cp a ,b ; inline void FFT(cp *a,int f) { for(int i=0;i<n;i++) if(i<r[i]) swap(a[i],a[r[i]]); for(int i=1;i<n;i<<=1) { cp wn(cos(pi/i),f*sin(pi/i)); for(int j=0,tmp=i<<1;j<n;j+=tmp) { cp w(1,0); for(int k=0;k<i;k++,w*=wn) { cp x=a[j+k],y=w*a[j+k+i]; a[j+k]=x+y,a[j+k+i]=x-y; } } } } int main() { scanf("%d%d",&n,&m); for(int i=0;i<=n;i++) scanf("%d",&x),a[i]=x; for(int i=0;i<=m;i++) scanf("%d",&x),b[i]=x; m+=n; for(n=1;n<=m;n<<=1) len++; for(int i=0;i<n;i++) r[i]=(r[i>>1]>>1)|((i&1)<<(len-1)); FFT(a,1),FFT(b,1); for(int i=0;i<=n;i++) a[i]*=b[i]; FFT(a,-1); for(int i=0;i<=m;i++) printf("%d ",(int)(a[i].real()/n+0.5)); return 0; }
相关文章推荐
- uoj34 多项式乘法【FFT or NTT】
- 【Uoj34】多项式乘法(NTT,FFT)
- 【Uoj34】多项式乘法(NTT,FFT)
- UOJ34 多项式乘法(NTT)
- UOJ34 - 多项式乘法
- uoj34 多项式乘法(FFT板子)
- 【uoj34】 多项式乘法
- uoj34 多项式乘法 ntt
- uoj34: 多项式乘法
- 多项式加法、乘法
- UOJ #34 多项式乘法
- 【Luogu3808】多项式乘法FFT
- 一元多项式的乘法与加法运算 (模拟)
- 02-线性结构1 一元多项式的乘法与加法运算
- PTA 一元多项式的乘法与加法运算
- 02-线性结构1 一元多项式的乘法与加法运算
- Java实现数组形式的多项式加法、减法、乘法、相除运算
- 一元多项式的乘法与加法运算(20 分)
- 5-1 一元多项式的乘法与加法运算 (20分)
- 十五、多项式乘法与快速傅里叶变换