频道栏目
首页 > 资讯 > 其他 > 正文

FFT的小板子问题解析

18-06-29        来源:[db:作者]  
收藏   我要投稿

FFT 快速傅里叶变换 丢个带注释的板子先
(其实是不会蝶形变换&复数意义 虽然搞不懂也没关系辣)

Code

#pragma GCC optimize(2) 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define oo 2139062143
#define fo(i,x,y) for (ll i=(x);i<=(y);++i)
using namespace std;
typedef double db;
typedef long long ll;
typedef complex com;
const ll N=524288+10;
const db pi=acos(-1);//cos 180=-1
com v[2][N],w[N]/*单位根*/;
ll ans[N];
ll n,wz[N],m;
void init(ll x)
{
 for (m=1;m>1]>>1)+((i&1)*(m>>1));
 w[0]=1,w[1]=com(cos(pi*2.0/m),sin(pi*2.0/m));
 fo(i,2,m) w[i]=w[i-1]*w[1]; 
}
com a[N]; 
void dft(com *c)
{
 fo(i,0,m-1) a[wz[i]]=c[i];com tp; 
 for (ll wh=2,hf=1;wh<=m;hf=wh,wh<<=1)
 fo(i,0,hf-1) for (ll l=i;l>1) swap(v[0][i],v[0][m-i]);//用来代替求W[1]的-1 
  dft(v[0]);
 fo(i,n-1,2*n-2) printf("%lf\n",v[0][i].real()/(1.0*m));
 return 0;
}
相关TAG标签
上一篇:java中发布maven项目的三种方式:直接运行、jar包方式、war包方式等实例讲解
下一篇:用两种方法求解九宫算问题
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站