FFT 模板
- #include<bits/stdc++.h>
- #define ll long long
- #define N 600005
- using namespace std;
- inline int read(){
- int x=,f=;char ch=getchar();
- while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
- while(ch>=''&&ch<=''){x=*x+ch-'';ch=getchar();}
- return x*f;
- }
- struct CD{
- double x,y;
- CD(double a=,double b=){x=a,y=b;}
- friend CD operator + (CD n1,CD n2){return CD(n1.x+n2.x,n1.y+n2.y);}
- friend CD operator - (CD n1,CD n2){return CD(n1.x-n2.x,n1.y-n2.y);}
- 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);}
- };
- const double Pi=acos(-1.0);
- int bit,n,m,nn;
- CD a[N],b[N];
- void FFT(CD *a,int n,int type){
- for(int i=,j=;i<n;i++) {
- if(j>i)swap(a[i],a[j]);
- int k=n;
- while(j&(k >>= ))j&=~k;
- j|=k;
- }
- for(int i=;i<=bit;i++){
- CD w_n(cos(*type*Pi/(<<i)),sin(*type*Pi/(<<i)));
- for(int j=;j<n;j+=(<<i)){
- CD w(,);
- for(int k=j;k<j+(<<(i-));k++){
- CD tmp=a[k],tt=w*a[k+(<<(i-))];
- a[k]=tmp+tt;
- a[k+(<<(i-))]=tmp-tt;
- w=w*w_n;
- }
- }
- }
- if(type<)for(int i=;i<n;i++)a[i].x/=n;
- }
- int main(){
- n=read();m=read();n++;m++;
- for(int i=;i<n;i++)scanf("%lf",&a[i].x),a[i].y=0.0;
- for(int i=;i<m;i++)scanf("%lf",&b[i].x),b[i].y=0.0;
- bit=;
- while((<<bit)<(n+m-))bit++;
- nn=<<bit;
- for(int i=n;i<nn;i++)a[i]=CD(0.0,0.0);
- for(int i=m;i<nn;i++)b[i]=CD(0.0,0.0);
- FFT(a,nn,);FFT(b,nn,);
- for(int i=;i<nn;i++)a[i]=a[i]*b[i];
- FFT(a,nn,-);
- for(int i=;i<(n+m-);i++)printf("%d ",(int)(a[i].x+0.5));
- return ;
- }
FFT 模板的更多相关文章
- 再写FFT模板
没什么好说的,今天又考了FFT(虽然不用FFT也能过)但是确实有忘了怎么写FFT了,于是乎只有重新写一遍FFT模板练一下手了.第一部分普通FFT,第二部分数论FFT,记一下模数2^23*7*17+1 ...
- HDU 1402 A * B Problem Plus (FFT模板题)
FFT模板题,求A*B. 用次FFT模板需要注意的是,N应为2的幂次,不然二进制平摊反转置换会出现死循环. 取出结果值时注意精度,要加上eps才能A. #include <cstdio> ...
- FFT模板(多项式乘法)
FFT模板(多项式乘法) 标签: FFT 扯淡 一晚上都用来捣鼓这个东西了...... 这里贴一位神犇的博客,我认为讲的比较清楚了.(刚好适合我这种复数都没学的) http://blog.csdn.n ...
- hdu1402(大数a*b&fft模板)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1402 题意: 给出两个长度1e5以内的大数a, b, 输出 a * b. 思路: fft模板 详情参 ...
- P1919 【模板】A*B Problem升级版 /// FFT模板
题目大意: 给定l,输入两个位数为l的数A B 输出两者的乘积 FFT讲解 这个讲解蛮好的 就是讲解里面贴的模板是错误的 struct cpx { double x,y; cpx(double _x= ...
- fft模板 HDU 1402
// fft模板 HDU 1402 #include <iostream> #include <cstdio> #include <cstdlib> #includ ...
- [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 ...
- UOJ#34 FFT模板题
写完上一道题才意识到自己没有在博客里丢过FFT的模板-- 这道题就是裸的多项式乘法,可以FFT,可以NTT,也可以用Karasuba(好像有人这么写没有T),也可以各种其他分治乘法乱搞-- 所以我就直 ...
- 【bzoj2179】FFT快速傅立叶 FFT模板
2016-06-01 09:34:54 很久很久很久以前写的了... 今天又比较了一下效率,貌似手写复数要快很多. 贴一下模板: #include<iostream> #include& ...
- FFT模板
我终于下定决心学习FFT了. orzCHX,得出模板: #include<cstdio> #include<cctype> #include<queue> #inc ...
随机推荐
- 深入理解JavaScript定时机制和定时器注意问题
容易欺骗别人感情的JavaScript定时器 JavaScript的setTimeout与setInterval是两个很容易欺骗别人感情的方法,因为我们开始常常以为调用了就会按既定的方式执行, 我想不 ...
- [javascript] 使用闭包编写模块
这是一篇[javascript the good parts]的读书笔记. 我们知道可以利用javascript 的prototype 特性为原始类型编写拓展模块.利用如下方法: Object.pro ...
- struts拦截器实现原理
图1: 上1来源于Struts2官方站点,是Struts 2 的整体结构. 一个请求在Struts2框架中的处理大概分为以下几个步骤 1 客户端初始化一个指向Servlet容器(例如Tomcat)的请 ...
- [译] Extending jQuery Part1 Simple extensions
本章包含: JQuery 的起源和目标. 你能扩展JQuery 的那些部分. JQuery 扩展的实例. 如今,JQuery 已经是网络上最受欢迎的JavaScript Library. 1.1 jQ ...
- centos6.4下安装php的imagick和imagemagick扩展教程
imagick在centos6.4的安装方法: .安装ImageMagick 代码如下: wget http://soft.vpser.net/web/imagemagick/ImageMagick- ...
- leetcode4568
date: 2015-09-13 16:32:49 Median of Two Sorted Arrays There are two sorted arrays nums1 and nums2 of ...
- ListView中每个item条目在被单击选中时能够高亮显示
在布局文件中设定: android:listSelector="@android:color/holo_red_light" 在代码中实现 listView.setSelector ...
- javascript 简单加解密
//加密 function MyEncrypt(txt) { var sb = ""; var rand = 0; for (var i=0;i<txt.length;i++ ...
- CE搜索内存数据的原理
最近发现有朋友在玩游戏时, 使用一款工具来修改游戏的部分数据,作弊的效果, 也就是CE(Cheat Engine),这款工具是 delphi 编写的, 于是好奇, 然后瞬间想到API OpenPr ...
- 将一个正整数分解为m个2的n次方的和
-- ============================================= -- Author: <maco_wang> -- Create date: & ...