快速傅里叶变换
来源:互联网 发布:手机放大字体软件 编辑:程序博客网 时间:2024/05/18 15:30
Fast Fourier Transform
FFT在信号处理中有重要的应用,在算法中的主要应用是加速多项式运算
——eg.多项式乘法,多项式取模,多项式求逆元…。由于不会LATEX公式,具体讲解请看澈哥博客(也可以看算导
),我就只粘个代码好了。。。
//迭代版#include <cstdio>#include <cmath>#include <complex>using namespace std;typedef complex<double> C;const int MAXN=262145;const double PI=acos(-1);int pos[MAXN],bit,n,m;C a[MAXN],b[MAXN];void FFT(C A[],short type){ for(int i=1;i<n;++i){ if(i<pos[i]) swap(A[i],A[pos[i]]); } for(int i=1;i<n;i<<=1){ C wn(cos(PI/i),type*sin(PI/i)); for(int j=0,tmp=i<<1;j<n;j+=tmp){ C w(1,0); for(int k=0;k<i;++k,w*=wn){ C x=A[j+k],y=w*A[i+j+k]; A[j+k]=x+y,A[i+j+k]=x-y; } } }}int main(){ scanf("%d%d",&n,&m); for(int i=0,x;i<=n;++i) scanf("%d",&x),a[i]=x; for(int i=0,x;i<=m;++i) scanf("%d",&x),b[i]=x; m+=n; for(n=1;n<m;n<<=1) ++bit; for(int i=1;i<n;++i) pos[i]=(pos[i>>1]>>1)|((i&1)<<(bit-1)); FFT(a,1),FFT(b,1); for(int i=0;i<=n;++i) a[i]*=b[i]; FFT(a,-1); for(int i=0;i<=m;++i) printf("%d ",int(a[i].real()/n+0.5)); return 0;}
0 0
- 快速傅里叶变换-快速傅里叶变换
- 快速傅里叶变换
- 快速傅里叶变换
- 快速傅里叶变换
- 快速傅里叶变换
- 快速傅里叶变换
- 快速傅里叶变换
- 快速傅里叶变换
- 快速傅里叶变换
- 快速傅里叶变换
- 快速傅里叶变换
- 快速傅里叶变换
- 快速傅里叶变换(FFT)(ZZ)
- 实序列快速傅里叶变换
- FFT快速傅里叶变换;
- 快速傅里叶变换(FFT)
- 关于FFT快速傅里叶变换
- 快速傅里叶变换库
- 我纠结的sql返回受影响行数与判断是否成功的问题
- .net对于Xml的常规操作
- 一行排奇数列的HTML排版
- css Hover的巧用
- 修改myeclipse发布的项目名称
- 快速傅里叶变换
- 前端设计的碎片思考
- mac系统开机启动实现
- 算法/贪心算法/FractionalKnapsack部分背包问题
- .NET项目工程生成一份项目帮助文档chm
- C#连接Access报“无法启动应用程序。工作组信息文件丢失,或是已被其它用户以独占方式打开。”
- android 实现图片上传功能 Tomcat作为服务器
- kafka中partition和消费者对应关系
- Cox风险回归分析