加强板子记忆。。。
把b一反就成为板子了。
//FFT 高精度乘法模板
#include<bits/stdc++.h>
#define N 263075
using namespace std;
int n,c[N],i,j,digit;
complex<double> a[N],b[N],p[N];
const double pi=acos(-1);
void FFT(complex<double> *x,int n,int type)
{
int i,j,k,t;
for(i=0,t=0;i<n;i++)
{
if(i>t)swap(x[i],x[t]);
for(int j=n>>1;(t^=j)<j;j>>=1);
}
for(int k=2;k<=n;k<<=1)
{
complex<double> wn(cos(type*2*pi/k),sin(type*2*pi/k));
for(int i=0;i<n;i+=k)
{
complex<double> w(1,0),t;
for(int j=0;j<k>>1;w*=wn,j++)
{
t=w*x[i+j+(k>>1)];
x[i+j+(k>>1)]=x[i+j]-t,x[i+j]+=t;
}
}
}
}
int main()
{
//freopen("in.txt","r",stdin);
scanf("%d",&n);
for(int i=0;i<n;i++)scanf("%lf%lf",&a[i].real(),&b[n-i-1].real());
for(digit=1;digit<=n<<1;digit<<=1);
FFT(a,digit,1),FFT(b,digit,1);
for(int i=0;i<digit;i++)p[i]=a[i]*b[i];
FFT(p,digit,-1);
for(int i=n-1;i<n+n-1;i++)
printf("%d\n",int(p[i].real()/digit+0.5));
return 0;
}
真神奇。。。