bzoj 2194快速傅立叶之二

/**************************************************************
    Problem: 2194
    User: Clare
    Language: C++
    Result: Accepted
    Time:1564 ms
    Memory:11820 kb
****************************************************************/
 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
 
#define N 300010
const double pi=acos(-1);
 
int read()
{
    int x=0,f=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
    return x*f;
}
 
int n,m,l;
int Rev[N];
struct Complex{
    double r,i;
    Complex(){}
    Complex(double r_,double i_):r(r_),i(i_){}
    Complex operator + (const Complex &a) const{
        return (Complex){r+a.r,i+a.i};
    }
    Complex operator - (const Complex &a) const{
        return (Complex){r-a.r,i-a.i};
    }
    Complex operator * (const Complex &a) const{
        return (Complex){r*a.r-i*a.i,r*a.i+i*a.r};
    }
}A[N],B[N];
 
void FFT(Complex *a,int kind)
{
    for(int i=0;i>1]>>1)|((i&1)<<(L-1));
    FFT(A,1);FFT(B,1);
    for(int i=0;i

你可能感兴趣的:(FFT)