了解到了FFT求卷积,但是还是感性的认识。。
取反就可以了。输出一定要加int!!!!
#include#include #include #include #include #include using namespace std;const double pi=acos(-1.0);struct Complex{ double r,i; Complex(){} Complex(double _r,double _i){r=_r, i=_i;} friend Complex operator +(Complex x,Complex y){ return Complex(x.r+y.r,x.i+y.i);} friend Complex operator -(Complex x,Complex y){ return Complex(x.r-y.r,x.i-y.i);} friend Complex operator *(Complex x,Complex y){ return Complex(x.r*y.r-x.i*y.i,x.r*y.i+x.i*y.r);}}A[410000],B[410000],C[410000];int R[410000];void fft(Complex *a,int n,int op){ for(int i=0;i >1]>>1 )|( (i&1) << (L-1) ); fft(A,n,1);fft(B,n,1); for(int i=0;i