zoukankan      html  css  js  c++  java
  • FFT 模板

    #include<bits/stdc++.h>
    #define ll long long
    #define N 600005
    using namespace std;
    inline 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=10*x+ch-'0';ch=getchar();}
      return x*f;
    }
    struct CD{
      double x,y;
      CD(double a=0,double b=0){x=a,y=b;}
      friend CD operator + (CD n1,CD n2){return CD(n1.x+n2.x,n1.y+n2.y);}
      friend CD operator - (CD n1,CD n2){return CD(n1.x-n2.x,n1.y-n2.y);}
      friend CD operator * (CD n1,CD n2){return CD(n1.x*n2.x-n1.y*n2.y,n1.x*n2.y+n1.y*n2.x);}
    };
    const double Pi=acos(-1.0);
    int bit,n,m,nn;
    CD a[N],b[N];
    void FFT(CD *a,int n,int type){
      for(int i=0,j=0;i<n;i++) {
        if(j>i)swap(a[i],a[j]);
        int k=n;
        while(j&(k >>= 1))j&=~k;
        j|=k;
      }
      for(int i=1;i<=bit;i++){
        CD w_n(cos(2*type*Pi/(1<<i)),sin(2*type*Pi/(1<<i)));
        for(int j=0;j<n;j+=(1<<i)){
          CD w(1,0);
          for(int k=j;k<j+(1<<(i-1));k++){
            CD tmp=a[k],tt=w*a[k+(1<<(i-1))];
            a[k]=tmp+tt;
            a[k+(1<<(i-1))]=tmp-tt;
            w=w*w_n;
          }
        }
      }
      if(type<0)for(int i=0;i<n;i++)a[i].x/=n;
    }
    int main(){
      n=read();m=read();n++;m++;
      for(int i=0;i<n;i++)scanf("%lf",&a[i].x),a[i].y=0.0;
      for(int i=0;i<m;i++)scanf("%lf",&b[i].x),b[i].y=0.0;
      bit=1;
      while((1<<bit)<(n+m-1))bit++;
      nn=1<<bit;
      for(int i=n;i<nn;i++)a[i]=CD(0.0,0.0);
      for(int i=m;i<nn;i++)b[i]=CD(0.0,0.0);
      
      FFT(a,nn,1);FFT(b,nn,1);
      for(int i=0;i<nn;i++)a[i]=a[i]*b[i];
      FFT(a,nn,-1);
      
      for(int i=0;i<(n+m-1);i++)printf("%d ",(int)(a[i].x+0.5));
      return 0;
    }
  • 相关阅读:
    selenium自动化测试CSS定位
    思想重铸(转自知乎)
    闭环思维
    20170503xlVBA房地产数据分类连接
    20170517xlVBA添加数据透视表
    20170617xlVBA销售数据分类汇总
    20170621xlVBA跨表转换数据
    20170612xlVBA含方框文档填表
    20170612xlVBA多文件多类别分类求和匹配
    20170617xlVBA调查问卷基础数据分类计数
  • 原文地址:https://www.cnblogs.com/wjyi/p/5550993.html
Copyright © 2011-2022 走看看