1. #include<bits/stdc++.h>
  2. #define ll long long
  3. #define N 600005
  4. using namespace std;
  5. inline int read(){
  6. int x=,f=;char ch=getchar();
  7. while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
  8. while(ch>=''&&ch<=''){x=*x+ch-'';ch=getchar();}
  9. return x*f;
  10. }
  11. struct CD{
  12. double x,y;
  13. CD(double a=,double b=){x=a,y=b;}
  14. friend CD operator + (CD n1,CD n2){return CD(n1.x+n2.x,n1.y+n2.y);}
  15. friend CD operator - (CD n1,CD n2){return CD(n1.x-n2.x,n1.y-n2.y);}
  16. 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);}
  17. };
  18. const double Pi=acos(-1.0);
  19. int bit,n,m,nn;
  20. CD a[N],b[N];
  21. void FFT(CD *a,int n,int type){
  22. for(int i=,j=;i<n;i++) {
  23. if(j>i)swap(a[i],a[j]);
  24. int k=n;
  25. while(j&(k >>= ))j&=~k;
  26. j|=k;
  27. }
  28. for(int i=;i<=bit;i++){
  29. CD w_n(cos(*type*Pi/(<<i)),sin(*type*Pi/(<<i)));
  30. for(int j=;j<n;j+=(<<i)){
  31. CD w(,);
  32. for(int k=j;k<j+(<<(i-));k++){
  33. CD tmp=a[k],tt=w*a[k+(<<(i-))];
  34. a[k]=tmp+tt;
  35. a[k+(<<(i-))]=tmp-tt;
  36. w=w*w_n;
  37. }
  38. }
  39. }
  40. if(type<)for(int i=;i<n;i++)a[i].x/=n;
  41. }
  42. int main(){
  43. n=read();m=read();n++;m++;
  44. for(int i=;i<n;i++)scanf("%lf",&a[i].x),a[i].y=0.0;
  45. for(int i=;i<m;i++)scanf("%lf",&b[i].x),b[i].y=0.0;
  46. bit=;
  47. while((<<bit)<(n+m-))bit++;
  48. nn=<<bit;
  49. for(int i=n;i<nn;i++)a[i]=CD(0.0,0.0);
  50. for(int i=m;i<nn;i++)b[i]=CD(0.0,0.0);
  51.  
  52. FFT(a,nn,);FFT(b,nn,);
  53. for(int i=;i<nn;i++)a[i]=a[i]*b[i];
  54. FFT(a,nn,-);
  55.  
  56. for(int i=;i<(n+m-);i++)printf("%d ",(int)(a[i].x+0.5));
  57. return ;
  58. }

FFT 模板的更多相关文章

  1. 再写FFT模板

    没什么好说的,今天又考了FFT(虽然不用FFT也能过)但是确实有忘了怎么写FFT了,于是乎只有重新写一遍FFT模板练一下手了.第一部分普通FFT,第二部分数论FFT,记一下模数2^23*7*17+1 ...

  2. HDU 1402 A * B Problem Plus (FFT模板题)

    FFT模板题,求A*B. 用次FFT模板需要注意的是,N应为2的幂次,不然二进制平摊反转置换会出现死循环. 取出结果值时注意精度,要加上eps才能A. #include <cstdio> ...

  3. FFT模板(多项式乘法)

    FFT模板(多项式乘法) 标签: FFT 扯淡 一晚上都用来捣鼓这个东西了...... 这里贴一位神犇的博客,我认为讲的比较清楚了.(刚好适合我这种复数都没学的) http://blog.csdn.n ...

  4. hdu1402(大数a*b&fft模板)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1402 题意: 给出两个长度1e5以内的大数a, b, 输出 a * b. 思路: fft模板 详情参 ...

  5. P1919 【模板】A*B Problem升级版 /// FFT模板

    题目大意: 给定l,输入两个位数为l的数A B 输出两者的乘积 FFT讲解 这个讲解蛮好的 就是讲解里面贴的模板是错误的 struct cpx { double x,y; cpx(double _x= ...

  6. fft模板 HDU 1402

    // fft模板 HDU 1402 #include <iostream> #include <cstdio> #include <cstdlib> #includ ...

  7. [hdu1402]大数乘法(FFT模板)

    题意:大数乘法 思路:FFT模板 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ...

  8. UOJ#34 FFT模板题

    写完上一道题才意识到自己没有在博客里丢过FFT的模板-- 这道题就是裸的多项式乘法,可以FFT,可以NTT,也可以用Karasuba(好像有人这么写没有T),也可以各种其他分治乘法乱搞-- 所以我就直 ...

  9. 【bzoj2179】FFT快速傅立叶 FFT模板

    2016-06-01  09:34:54 很久很久很久以前写的了... 今天又比较了一下效率,貌似手写复数要快很多. 贴一下模板: #include<iostream> #include& ...

  10. FFT模板

    我终于下定决心学习FFT了. orzCHX,得出模板: #include<cstdio> #include<cctype> #include<queue> #inc ...

随机推荐

  1. 深入理解JavaScript定时机制和定时器注意问题

    容易欺骗别人感情的JavaScript定时器 JavaScript的setTimeout与setInterval是两个很容易欺骗别人感情的方法,因为我们开始常常以为调用了就会按既定的方式执行, 我想不 ...

  2. [javascript] 使用闭包编写模块

    这是一篇[javascript the good parts]的读书笔记. 我们知道可以利用javascript 的prototype 特性为原始类型编写拓展模块.利用如下方法: Object.pro ...

  3. struts拦截器实现原理

    图1: 上1来源于Struts2官方站点,是Struts 2 的整体结构. 一个请求在Struts2框架中的处理大概分为以下几个步骤 1 客户端初始化一个指向Servlet容器(例如Tomcat)的请 ...

  4. [译] Extending jQuery Part1 Simple extensions

    本章包含: JQuery 的起源和目标. 你能扩展JQuery 的那些部分. JQuery 扩展的实例. 如今,JQuery 已经是网络上最受欢迎的JavaScript Library. 1.1 jQ ...

  5. centos6.4下安装php的imagick和imagemagick扩展教程

    imagick在centos6.4的安装方法: .安装ImageMagick 代码如下: wget http://soft.vpser.net/web/imagemagick/ImageMagick- ...

  6. leetcode4568

    date: 2015-09-13 16:32:49 Median of Two Sorted Arrays There are two sorted arrays nums1 and nums2 of ...

  7. ListView中每个item条目在被单击选中时能够高亮显示

    在布局文件中设定: android:listSelector="@android:color/holo_red_light" 在代码中实现 listView.setSelector ...

  8. javascript 简单加解密

    //加密 function MyEncrypt(txt) { var sb = ""; var rand = 0; for (var i=0;i<txt.length;i++ ...

  9. CE搜索内存数据的原理

      最近发现有朋友在玩游戏时, 使用一款工具来修改游戏的部分数据,作弊的效果, 也就是CE(Cheat Engine),这款工具是 delphi 编写的, 于是好奇, 然后瞬间想到API OpenPr ...

  10. 将一个正整数分解为m个2的n次方的和

    -- ============================================= -- Author:      <maco_wang> -- Create date: & ...