Description:

FFT真的容易忘,所以就放到上面来了

#include<bits/stdc++.h>
using namespace std;
const int mxn=4e6+5;
const double PI=acos(-1);
int n,m,l,lim=1,r[mxn]; struct cp {
double x,y;
cp(double xx=0,double yy=0) {x=xx,y=yy;}
friend cp operator + (cp a,cp b) {
return cp(a.x+b.x,a.y+b.y);
}
friend cp operator - (cp a,cp b) {
return cp(a.x-b.x,a.y-b.y);
}
friend cp operator * (cp a,cp b) {
return cp(a.x*b.x-a.y*b.y,a.x*b.y+a.y*b.x);
}
}a[mxn],b[mxn]; void FFT(cp *p,int opt)
{
for(int i=0;i<lim;++i)
if(i<r[i]) swap(p[i],p[r[i]]);
for(int mid=1;mid<lim;mid<<=1) { //枚举长度
cp wn(cos(PI/mid),opt*sin(PI/mid));
for(int len=mid<<1,j=0;j<lim;j+=len) { //枚举区间
cp w(1,0);
for(int k=0;k<mid;++k,w=w*wn) { //枚举操作的数
cp x=p[j+k],y=w*p[j+mid+k];
p[j+k]=x+y; p[j+mid+k]=x-y; //核心操作
}
}
}
} int main()
{
scanf("%d%d",&n,&m);
for(int i=0;i<=n;++i) scanf("%lf",&a[i].x);
for(int i=0;i<=m;++i) scanf("%lf",&b[i].x);
while(lim<=n+m) lim<<=1,++l; //确定位数
for(int i=0;i<lim;++i)
r[i]=(r[i>>1]>>1)|((i&1)<<(l-1)); //非递归的优化
FFT(a,1); FFT(b,1);
for(int i=0;i<=lim;++i) a[i]=a[i]*b[i];
FFT(a,-1);
for(int i=0;i<=n+m;++i)
printf("%d ",(int )(a[i].x/lim+0.5)); //IDFT之后要除以长度
return 0;
}

最新文章

  1. 【前端开发】优化代码之减少引入,css预编译语言的优点,stylus的使用
  2. ABP的第一个程序和遇到的一些问题
  3. Linux 中 10 个有用的命令行补全例子
  4. 套汇问题 Floyd
  5. Android(java)学习笔记90:泛型类的概述和使用
  6. php 基于phpexcel制作的导出excel类
  7. 适配器模式—STL中的适配器模式分析
  8. 页面加载完毕执行多个JS函数
  9. 前端布局常见IE6 bug的解决方法,清除浮动的几种方法以及各自的优缺点
  10. 使用Android&#160;studio作按键切换界面
  11. Spring学习(10)--- @Qualifier注解
  12. 201521123079《java程序设计》第5周学习总结
  13. php程序员面试经验
  14. 记一下webstorm快键键
  15. 005_python中的构造函数和析构函数
  16. [转]DB2中需要REORG操作的几种情况
  17. Axiom3D:Ogre射线与点,线,面相交,鼠标操作3维空间.
  18. Android widget
  19. L1-042 日期格式化
  20. html大小写问题

热门文章

  1. SVN重新设置用户名和密码
  2. gitlab使用--汉化及修改端口
  3. The error may exist in com/bjpowernode/dao/StudentDao.xml ### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderExcept
  4. 用C语言实现窗口抖动
  5. iptables命令
  6. WPF 对控件进行截图且不丢失范围(转载)
  7. 山寨版 WP8.1 Cortana 启动 PC
  8. [转] css3变形属性transform
  9. Java第三阶段学习(七、线程池、多线程)
  10. Fib数列2 费马小定理+矩阵乘法