先来一段非递归!

 #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. Nginx基础知识之————Nginx 环境的搭建?

    本课时主要给大家讲解如何在 Linux 系统下搭建 Nginx 和 Nginx 搭建过程中常见问题的知识,并结合实例让学员掌握 Nginx 环境的搭建. 下载解压: 安装gcc-c++ 从新配置文件: ...

  2. Redis基础知识之————使用技巧(持续更新中.....)

    一.key 设计技巧 把表名转换为key前缀 如, tag: 第2段放置用于区分区key的字段--对应mysql中的主键的列名,如userid 第3段放置主键值,如2,3,4...., a , b , ...

  3. JS 对象(Object)和字符串(String)互转

    利用原生JSON对象,将对象转为字符串 var jsObj = {}; jsObj.testArray = [1,2,3,4,5]; jsObj.name = 'CSS3'; jsObj.date = ...

  4. OpenGL的glOrtho平行投影函数详解[转]

    glortho函数可以将当前的可视空间设置为正投影空间.基参数的意义如图,如果绘制的图空间本身就是二维的,可以使gluOrtho2D.他的使用类似于glOrtho 原型是: void glOrtho( ...

  5. Windows 上远程访问 Unix 的 XWindow / XManager / X

    准备 下载 putty  - http://www.putty.org/ 安装 cygwin - http://cygwin.com/, 并添加 e.g. c:/cygwin/bin 到 Window ...

  6. PacBio软件总览 - 初级分析

    PacBio® RS Software Overview PacBio运行的整个流程是什么?每一步都用到了什么软件? PacBio软件套件 RS Remote:Design runs remotely ...

  7. 【转】 C++中的new VS C语言中的malloc

    作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 前几天一个朋友去面试百度空间的一个职位,被问及这个问题,我听后说了几点,不过感觉还是不透彻,所以上网查阅了一些资 ...

  8. mongodb配置及简单示例

    安装 在官网下载安装 https://www.mongodb.com/ 配置 我的电脑—>右键属性—>左边列表中的高级程序设置—>环境变量 点击path 把你的mongodb文件路径 ...

  9. IE9以上 CSS文件因Mime类型不匹配而被忽略 其他浏览器及IE8以下显示正常

     什么是Mime类型? MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名 ...

  10. append appendChild appendTo区别

    1.append和appendChild的区别 append是jquery文档操作用法 ① append() 方法在被选元素的结尾(仍然在内部)插入指定内容. $(selector).append(c ...