先来一段非递归!

 #include<bits/stdc++.h>
using namespace std;
#define N ((1<<18)+3)
const double eps=0.5,pi=acos(-);
struct vec{
double r,i;
vec operator +(const vec& w){return (vec){r+w.r,i+w.i};}
vec operator -(const vec& w){return (vec){r-w.r,i-w.i};}
vec operator *(const vec& w){return (vec){r*w.r-i*w.i,i*w.r+r*w.i};}
}a[N],b[N];
int n,m,len,rev[N],t;
bool che[N];
int read(){
int f=,a=getchar(),tmp=;
while(a<'' || a>'') {if(a=='-') f=-; a=getchar();}
while(a>=''&& a<='') tmp=tmp*+a-'',a=getchar();
return tmp*=f;
}
void fft(vec *x,int t){
memset(che,,sizeof(che));
for(int i=;i<len;i++) if(!che[i]) swap(x[i],x[rev[i]]),che[rev[i]]=;
for(int lnow=;lnow<=len;lnow<<=){ //从最底层开始往上推,一开始每一小坨只有2个,慢慢往上到最后达到len
vec w0=(vec){cos(t**pi/lnow),sin(t**pi/lnow)},w,t1,t2;
for(int i=;i<len;i+=lnow){ //每一坨
vec w=(vec){,};
for(int j=;j<lnow/;j++,w=w*w0){
t1=x[i+j]; t2=w*x[i+j+lnow/];
x[i+j]=t1+t2; x[i+j+lnow/]=t1-t2;
}
}
}
}
int main(){
n=read(); m=read();
for(len=;len<(n+m+);len<<=,t++); t--;
for(int i=;i<=len;i++) rev[i]=(rev[i>>]>>)|(i&?(<<t):); //二进制反转,注意之前的t--
for(int i=;i<=n;i++) a[i].r=read();
for(int i=;i<=m;i++) b[i].r=read();
fft(a,); fft(b,);
for(int i=;i<=len;i++) a[i]=a[i]*b[i];
fft(a,-);
for(int i=;i<=n+m;i++) printf("%d ",(int)(a[i].r/len+eps));
return ;
}

FFT一周目开坑!的更多相关文章

  1. 开坑,Unix环境高级编程,转行之路又得缓缓了

    不要问我基础,我用了近6年的Linux系统,最早的版本可以追溯到Ubuntu 8.04,常用的命令 VIM基本上是没压力,遇到问题google 配置环境变量 网络环境也不在话下, C语法基本熟练,过去 ...

  2. CozyRSS开发记录0-RSS阅读器开坑

    CozyRSS开发记录0-RSS阅读器开坑 1.RSS RSS,全名是Really Simple Syndication,简易信息聚合. 关于RSS相关的介绍,网上可以很容易的找到.RSS阅读器是我几 ...

  3. 【前言】Go语言开坑

    很早之前就已经听过Go语言的大名,今天终于要开坑研究Go了,来吧看看<Go语言从入门到入坟>. [Go语言学习目录] 1. Go安装 2. Go变量(Variables) 3. Go语言基 ...

  4. 开坑数位dp

    [背景] 在10月3日的dp专练中,压轴的第6题是一道数位dp,于是各种懵逼. 为了填上这个留存已久的坑,蒟蒻chty只能开坑数位dp了. [例题一][HDU2089]不要62 题目大意:给你一个区间 ...

  5. (目录)Fortran学习笔记:开坑!!!

    前言:因为某些原因,需要使用Fortran编写程序,记录下Fortran语法学习过程中的部分笔记.在此开坑记录,立下Flag,"希望年末能够更新完" Fortran 学习笔记 陈橙 ...

  6. CozyRSS2开发记录0-win10开坑

    1.回顾 距离上一篇<CozyRSS1.0 - 有可用性版本>,恰好两个月整.在初步完成CozyRSS的WPF桌面版后,按照设想的,开始搞一个手机版的CozyRSS.由于种种原因,并没有使 ...

  7. taobao_api项目开坑,自主完成淘宝主要接口的开发-版本:卖家版(非淘宝api)

    项目名称:taobao_api 项目目的:独立实现各个淘宝操作的相关api,不依赖淘宝提供的api,而是自己实现接口 前期实现接口:已付款订单查询(自动更新), 订单发货 , 订单备注 应用场景:中小 ...

  8. Html+CSS二周目--->常用概念

    学习css几乎俩周,来总结一下 对于初学者来说,有一些基本的概念是我们应当清楚的.掌握这些概念,可以帮助你更加有效的开发,大大提高开发效率. 1.盒子模型 2.浮动(float) 3.定位(posit ...

  9. 基于VS2017+ROS的ROSOnWindows开坑之旅

    前面尝试了很多算法之后,得先找个能用的环境跑起来试试,于是决定尝试下ROS环境,但是我一直没有尝试Windows版也是因为这个原因,坑太多了,不过现在找到了微软IoT移植的ROSOnWindows,并 ...

随机推荐

  1. URLConnection 使用

    统一资源定位符URL(Uniform Resource Locator)是www客户机访问Internet时用来标识资源的名字和地址.超文本链路由统一资源定位符URL维持.URL的格式是: <M ...

  2. js 函数-Tom

    函数类型 在ECMAScript 中有三种函数类型:函数声明,函数表达式和函数构造器创建的函数.每一种都有自己的特点. 函数声明 函数声明(缩写为FD)是这样一种函数: 有一个特定的名称 在源码中的位 ...

  3. ajax实现无刷新上传附件并且显示进度条的实例

    首先:得把php.ini中的post_max_size和upload_max_filesize改成200M或更大(进度条好看效果,默认是2M) html和js代码: <!DOCTYPE html ...

  4. Oracle存储过程中异步调用的实际操作步骤

    本文标签:Oracle存储过程 我们都知道在Oracle数据库的实际应用的过程中,我们经常把相关的业务处理逻辑,放在Oracle存储过程中,客户端以通过ADO来进行相关的调用  .而有些相关的业务逻辑 ...

  5. NTFS reparse point

    https://en.wikipedia.org/wiki/NTFS_reparse_point NTFS HARD link: since Windows NT4: files on the sam ...

  6. 分享几个Javascript 封装方法

    基本封装方法 请看下面的例子: var Person = function(name,age){ this.name = name; this.age = age || "未填写" ...

  7. Android 使用ContentProvider扫描手机中的图片,仿微信显示本地图片效果

    版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/1873 ...

  8. pl/sql developer执行光标所在行

    一.发现问题 需要执行某一行语句时,需要选中该行语句,点击F8才行. 二.解决问题 中文版:工具->首选项->SQL窗口->自动选择语句 英文版:tools->preferen ...

  9. 转:最小区间:k个有序的数组,找到最小区间使k个数组中每个数组至少有一个数在区间中

    转:http://www.itmian4.com/thread-6504-1-1.html 最小区间原题 k个有序的数组,找到最小的区间范围使得这k个数组中,每个数组至少有一个数字在这个区间范围内.比 ...

  10. Sqlserver_视图

    SQL CREATE VIEW 语句 在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表. 视图包含行和列,就像一个真实的表.视图中的字段就是来自一个或多个数据库中的真实的表中的字段. 您可 ...