woc......FFT这玩意儿真坑......

一上午除了打了几遍板子什么也没干......真是废了......

你要加油啊......

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<cmath>
  4. #include<algorithm>
  5. using namespace std;
  6. const int maxn=;
  7. const double pi=acos(-1.0),eps=1e-;
  8. struct Complex{
  9. double a,b;
  10. Complex(double a=0.0,double b=0.0):a(a),b(b){}
  11. Complex operator+(const Complex &x)const{return Complex(a+x.a,b+x.b);}
  12. Complex operator-(const Complex &x)const{return Complex(a-x.a,b-x.b);}
  13. Complex operator*(const Complex &x)const{return Complex(a*x.a-b*x.b,a*x.b+b*x.a);}
  14. }A[maxn],B[maxn];
  15. void FFT(Complex*,int,int);
  16. int n,m,N=;
  17. int main(){
  18. scanf("%d%d",&n,&m);
  19. n++;m++;
  20. while(N<n+m)N<<=;
  21. for(int i=;i<n;i++)scanf("%lf",&A[i].a);
  22. for(int i=;i<m;i++)scanf("%lf",&B[i].a);
  23. FFT(A,N,);
  24. FFT(B,N,);
  25. for(int i=;i<N;i++)A[i]=A[i]*B[i];
  26. FFT(A,N,-);
  27. for(int i=;i<n+m-;i++)printf("%d ",(int)(A[i].a+eps));
  28. return ;
  29. }
  30. void FFT(Complex *A,int n,int tp){
  31. for(int i=,j=;i<n-;i++){
  32. int k=N;
  33. do{
  34. k>>=;
  35. j^=k;
  36. }while(j<k);
  37. if(i<j)swap(A[i],A[j]);
  38. }
  39. for(int k=;k<=n;k<<=){
  40. Complex wn(cos(-tp**pi/k),sin(-tp**pi/k));
  41. for(int i=;i<n;i+=k){
  42. Complex w(1.0,0.0);
  43. for(int j=;j<(k>>);j++,w=w*wn){
  44. Complex a(A[i+j]),b(w*A[i+j+(k>>)]);
  45. A[i+j]=a+b;
  46. A[i+j+(k>>)]=a-b;
  47. }
  48. }
  49. }
  50. if(tp<)for(int i=;i<n;i++)A[i].a/=n;
  51. }

挖个大坑:

COGS2216 你猜是不是KMP

FFT板子的更多相关文章

  1. maomao的fft板子

    \(QwQ\) #include <cmath> #include <cstdio> #include <cstring> #include <iostrea ...

  2. 高精乘(fft板子

    哇..fft的原理真的是不太好懂,看了好久许多细节还是不太清楚,但感觉本质就是用了单位根的性质. https://www.luogu.org/problem/P1919 #include<cst ...

  3. FFT && NTT板子

    贴板子啦-- FFT板子:luogu P3803 [模板]多项式乘法(FFT) #include<cstdio> #include<iostream> #include< ...

  4. 卷积FFT、NTT、FWT

    先简短几句话说说FFT.... 多项式可用系数和点值表示,n个点可确定一个次数小于n的多项式. 多项式乘积为 f(x)*g(x),显然若已知f(x), g(x)的点值,O(n)可求得多项式乘积的点值. ...

  5. bzoj 4332 FFT型的快速幂(需要强有力的推导公式能力)

     有n个小朋友,m颗糖,你要把所有糖果分给这些小朋友. 规则第 i 个小朋友没有糖果,那么他之后的小朋友都没有糖果..如果一个小朋友分到了 xx 个糖果,那么的他的权值是 f(x) = ox^2 +  ...

  6. 【FFT】hdu1402 A * B Problem Plus

    FFT板子. 将大整数看作多项式,它们的乘积即多项式的乘积在x=10处的取值. #include<cstdio> #include<cmath> #include<cst ...

  7. noip前打板子 qwq

    在某咕上打了一晚上的模板 感觉还好... #include<bits/stdc++.h> #define LL long long using namespace std; inline ...

  8. UVa12298(生成函数的简单应用+FFT)

    I have a set of super poker cards, consisting of an infinite number of cards. For each positive compo ...

  9. BZOJ 2179 FFT模板

    思路:FFT板子题 //By SiriusRen #include <cstdio> #include <complex> using namespace std; typed ...

随机推荐

  1. mysql 快照读MVCC

    mysql的读分快照读和当前读 快照读 是指写的同时,读不阻塞,达到并发的作用 这时候的读 是 记录的历史版本,存在于undo里,当然回滚时就的也是这个undo 当执行一条update语句时,记录本身 ...

  2. P3366 (模板)最小生成树

    2019-01-30 最小生成树基本算法 定义: 给定一个边带权的无向图G=(V,E),n=|V|,m=|E|,由V中全部n个定点和E中n-1条边构成的无向连通子图被称为G的一颗生成树. 边的权值之和 ...

  3. simulate UE activity

    can: 1,connect, disconnect 2,configure serial,nic,com,model,version,IMEI,IMSI,IP 3,various AT comman ...

  4. 彻底成功配置Maven和Eclipse集成

    这篇文章是分享给还在苦苦挣扎eclipse和Maven环境配置的同志,让其少走弯路,话不多说,直接开始吧 环境出问题一是配置没有配置好,二是各个部分可能出现兼容问题,导致错误,综上,我选择了一个切实可 ...

  5. find命令用法集锦

    find命令用法: 01--过滤日志find -name "catelina.*.out"|xargs -f |grep '关键字' 02 -忽略一个目录或者多个目录find ./ ...

  6. 红米手机3S 3X简单卡刷开发版获得ROOT权限的方法

    小米的机器不同手机型号一般小米论坛都提供两个不同的系统,即分别是稳定版和开发版,稳定版没有提供root权限管理,开发版中就支持了root权限,很多情况下我们需要使用的一些功能强大的APP,都需要在ro ...

  7. Linux安装python3.6.3

    一: (1)wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz 下载安装包 (可以到网站下载,然后上传到Linux) (2)ta ...

  8. 生成随机32位Token43位asekey

    // 生成随机32位Token字符和43位AseKey var arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', ' ...

  9. pip升级最新版本

    1.如果是python2.7输入以下指令 python -m pip install --upgrade pip 2.如果是python 3.+输入以下指令 python3 -m pip instal ...

  10. Ubuntu 16.04安装SecureCRT替代XShell

    XShell应该是最强大的,在Ubuntu下只有SecureCRT能实现跨平台(Linux/Windows/Mac),并且可以实现Tab的功能等.当然,还有其它的类似PuTTY这些.Windows下建 ...