#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<queue>
#include<cstring>
#define PAU putchar(' ')
#define ENT putchar('\n')
using namespace std;
const int maxm=+,maxn=+;
const double pi=acos(-1.0);
struct fft{
struct cx{
double r,i;cx(double _r=0.0,double _i=0.0){r=_r;i=_i;}
cx operator+(const cx&a){return cx(r+a.r,i+a.i);}
cx operator-(const cx&a){return cx(r-a.r,i-a.i);}
cx operator*(const cx&a){return cx(r*a.r-i*a.i,r*a.i+i*a.r);}
}f[maxm];int len;
void init(int*s,int L,int len){
this->len=len;for(int i=;i<L;i++)f[i]=cx(s[L-i-],0.0);return;
}
void change(){
for(int i=,j=len>>;i<len-;i++){
if(i<j)swap(f[i],f[j]);int k=len>>;
while(j>=k)j-=k,k>>=;if(j<k)j+=k;
} return;
}
void cal(int tp){
change();double tm=-tp**pi;
for(int i=;i<=len;i<<=){
double tr=tm/i;cx wn(cos(tr),sin(tr));
for(int j=;j<len;j+=i){
cx w(,);int tn=i>>;
for(int k=j;k<j+tn;k++){
cx u=f[k],t=w*f[k+tn];
f[k]=u+t;f[k+tn]=u-t;w=w*wn;
}
}
}if(tp<) for(int i=;i<len;i++) f[i].r/=len;return;
}
};
void mul(int*s,int*t,int L1,int L2,int&L,int*ans){
L=;while(L<L1<<||L<L2<<)L<<=;static fft a,b;
a.init(s,L1,L);b.init(t,L2,L);a.cal();b.cal();
for(int i=;i<L;i++) a.f[i]=a.f[i]*b.f[i];a.cal(-);
for(int i=;i<L;i++) ans[i]=(int)(a.f[i].r+0.5);return;
}
inline int read(){
int x=,sig=;char ch=getchar();
while(!isdigit(ch)){if(ch=='-') sig=-;ch=getchar();}
while(isdigit(ch)) x=*x+ch-'',ch=getchar();
return x*sig;
}
inline void write(int x){
if(x==){putchar('');return;}if(x<) putchar('-'),x=-x;
int len=,buf[];while(x) buf[len++]=x%,x/=;
for(int i=len-;i>=;i--) putchar(buf[i]+'');return;
}
int s[maxn],t[maxn],ans[maxm],L1,L2,L;
void init(){
L1=read()+;L2=read()+;
for(int i=;i<L1;i++) s[i]=read();
for(int i=;i<L2;i++) t[i]=read();
mul(s,t,L1,L2,L,ans);
return;
}
void work(){
int lim=L1+L2-;
for(L--;!ans[L]&&L&&L>lim;L--);
for(int i=L;i>=;i--) write(ans[i]),PAU;
return;
}
void print(){
return;
}
int main(){init();work();print();return ;}

FFT修正的更多相关文章

  1. 用于ARM上的FFT与IFFT源代码(C语言,不依赖特定平台)(转)

    源:用于ARM上的FFT与IFFT源代码(C语言,不依赖特定平台) 代码在2011年全国电子大赛结束后(2011年9月3日)发布,多个版本,注释详细. /*********************** ...

  2. 多项式 之 快速傅里叶变换(FFT)/数论变换(NTT)/常用套路【入门】

    原文链接https://www.cnblogs.com/zhouzhendong/p/Fast-Fourier-Transform.html 多项式 之 快速傅里叶变换(FFT)/数论变换(NTT)/ ...

  3. [hdu5307] He is Flying [FFT+数学推导]

    题面 传送门 思路 看到这道题,我的第一想法是前缀和瞎搞,说不定能$O\left(n\right)$? 事实证明我的确是瞎扯...... 题目中的提示 这道题的数据中告诉了我们: $sum\left( ...

  4. [ C++ 快速高精度模板 ] [ BigN类 ] 大整数类 高精度 模板 BigInt FFT 快速傅里叶变换

    [原创 转载请注明]瞎写的,如果代码有错,或者各位大佬有什么意见建议,望不吝赐教 更新日志: 对于规模较小的整数乘法使用$$O(n^2)$$方法,提高速度 modify()和operator[]的bu ...

  5. [修正] Firemonkey 中英文混排折行问题(移动平台)

    问题:FMX 在移动平台的文字显示并非由该平台的原生 API 来显示,而是由 FMX.TextLayout.GPU 来处理,也许是官方没留意到中文字符的问题,造成在中英文混排折行时,有些问题. 适用: ...

  6. [修正] Firemonkey Android 显示 Emoji (颜文字)

    问题:在 Android 平台下,显示 Emoji 文字,无法显示彩色(皆为黑色),例如 Edit 控件,即使将 Edit.ControlType = Platform 设为平台原生控件,还是没用(真 ...

  7. 并行计算提升32K*32K点(32位浮点数) FFT计算速度(4核八线程E3处理器)

    对32K*32K的随机数矩阵进行FFT变换,数的格式是32位浮点数.将产生的数据存放在堆上,对每一行数据进行N=32K的FFT,记录32K次fft的时间. 比较串行for循环和并行for循环的运行时间 ...

  8. 【BZOJ-2179&2194】FFT快速傅里叶&快速傅里叶之二 FFT

    2179: FFT快速傅立叶 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 2978  Solved: 1523[Submit][Status][Di ...

  9. 为什么FFT时域补0后,经FFT变换就是频域进行内插?

    应该这样来理解这个问题: 补0后的DFT(FFT是DFT的快速算法),实际上公式并没变,变化的只是频域项(如:补0前FFT计算得到的是m*2*pi/M处的频域值, 而补0后得到的是n*2*pi/N处的 ...

随机推荐

  1. Demon_打砖块(建造一面墙,发射子弹打砖块)

    using UnityEngine; using System.Collections; public class CubeInit : MonoBehaviour { //砖块预设体 public ...

  2. HDU1863 畅通project 【最小生成树Prim】

    畅通project Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  3. (2)入门指南——(2)jQuery可以做什么(What jQuery does)

    The jQuery library provides a general-purpose abstraction layer for common web scripting, and is, th ...

  4. android api 中文 (73)—— AdapterView

    前言 本章内容是android.widget.AdapterView,版本为Android 2.3 r1,翻译来自"cnmahj",欢迎大家访问他的博客:http://androi ...

  5. android自定义倒计时控件示例

    这篇文章主要介绍了Android秒杀倒计时自定义TextView示例,大家参考使用吧 自定义TextView控件TimeTextView代码: 复制代码 代码如下: import android.co ...

  6. Java实现BASE64编解码

    Java实现BASE64编解码 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs BASE64和其它类似的编码算法通经常使用于转换二进制数据为文本数据,其目 ...

  7. C#中hashtable的赋值、取值、遍历、排序操作

    一,哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值对,其 ...

  8. Android -- getSystemService

    Android的后台运行在很多service,它们在系统启动时被SystemServer开启,支持系统的正常工作,比如MountService监听是否有SD卡安装及移除,ClipboardServic ...

  9. Java基础知识强化71:正则表达式之基本规则 和 常用正则表达式

    1. 基本规则: A:字符 x 字符 x.举例:'a'表示字符a \\ 反斜线字符. \n 新行(换行)符 ('\u000A') \r 回车符 ('\u000D') B:字符类 [abc] a.b 或 ...

  10. ant打包命令

    学习ant打包命令.发布到以上tomcat还未做集成部署,无法添加到jenkins中. http://blog.csdn.net/telnetor/article/details/7015935 ht ...