FFT(快速傅里叶变换) 模板
存个板子,完全弄懂之后找机会再写个详解。
#include<cstdio>
#include<cmath> struct cpx
{
double rl,im;
friend cpx operator + (cpx q,cpx w)
{
return (cpx){q.rl+w.rl,q.im+w.im};
}
friend cpx operator - (cpx q,cpx w)
{
return (cpx){q.rl-w.rl,q.im-w.im};
}
friend cpx operator * (cpx q,cpx w)
{
return (cpx){q.rl*w.rl-q.im*w.im,q.rl*w.im+q.im*w.rl};
}
friend cpx operator ~ (cpx q)
{
return (cpx){q.rl,-q.im};
}
}urt[][],af[],bf[]; void swap(cpx &q,cpx &w)
{
cpx t=q;q=w;w=t;
} int n=,cnt,na,nb;
int r[];
const double pi=acos(-); void prefft()
{
for(int i=;i<n;i++)
{
urt[i][]=(cpx){cos(*pi*i/n),sin(*pi*i/n)};
urt[i][]=~urt[i][];
r[i]=(r[i>>]>>)|((i&)<<(cnt-));
}
} void fft(cpx *a,int inv)
{
for(int i=;i<n;i++)if(i<r[i])swap(a[i],a[r[i]]);
for(int l=;l<=n;l<<=)
{
int m=l>>;
for(cpx *p=a;p!=a+n;p+=l)
{
for(int i=;i<m;i++)
{
cpx t=urt[n/l*i][inv]*p[i+m];
p[i+m]=p[i]-t;
p[i]=p[i]+t;
}
}
}
if(inv)for(int i=;i<n;i++)a[i].rl/=n;
} int main()
{
scanf("%d%d",&na,&nb);
while(n<=na+nb)n<<=,cnt++;
for(int i=;i<=na;i++)scanf("%lf",&af[i].rl);
for(int i=;i<=nb;i++)scanf("%lf",&bf[i].rl);
prefft();
fft(af,);
fft(bf,);
for(int i=;i<n;i++)af[i]=af[i]*bf[i];
fft(af,);
for(int i=;i<=na+nb;i++)printf("%d ",(int)(af[i].rl+0.5));
return ;
}
FFT(快速傅里叶变换) 模板的更多相关文章
- 「学习笔记」FFT 快速傅里叶变换
目录 「学习笔记」FFT 快速傅里叶变换 啥是 FFT 呀?它可以干什么? 必备芝士 点值表示 复数 傅立叶正变换 傅里叶逆变换 FFT 的代码实现 还会有的 NTT 和三模数 NTT... 「学习笔 ...
- FFT 快速傅里叶变换 学习笔记
FFT 快速傅里叶变换 前言 lmc,ikka,attack等众多大佬都没教会的我终于要自己填坑了. 又是机房里最后一个学fft的人 早背过圆周率50位填坑了 用处 多项式乘法 卷积 \(g(x)=a ...
- CQOI2018 九连环 打表找规律 fft快速傅里叶变换
题面: CQOI2018九连环 分析: 个人认为这道题没有什么价值,纯粹是为了考算法而考算法. 对于小数据我们可以直接爆搜打表,打表出来我们可以观察规律. f[1~10]: 1 2 5 10 21 4 ...
- FFT —— 快速傅里叶变换
问题: 已知A[], B[], 求C[],使: 定义C是A,B的卷积,例如多项式乘法等. 朴素做法是按照定义枚举i和j,但这样时间复杂度是O(n2). 能不能使时间复杂度降下来呢? 点值表示法: 我们 ...
- [C++] 频谱图中 FFT快速傅里叶变换C++实现
在项目中,需要画波形频谱图,因此进行查找,不是很懂相关知识,下列代码主要是针对这篇文章. http://blog.csdn.net/xcgspring/article/details/4749075 ...
- matlab中fft快速傅里叶变换
视频来源:https://www.bilibili.com/video/av51932171?t=628. 博文来源:https://ww2.mathworks.cn/help/matlab/ref/ ...
- 模板 FFT 快速傅里叶变换
FFT模板,原理不难,优质讲解很多,但证明很难看太不懂 这模板题在bzoj竟然是土豪题,服了 #include <cmath> #include <cstdio> #inclu ...
- 洛谷P1919 A*B problem 快速傅里叶变换模板 [FFT]
题目传送门 A*B problem 题目描述 给出两个n位10进制整数x和y,你需要计算x*y. 输入输出格式 输入格式: 第一行一个正整数n. 第二行描述一个位数为n的正整数x. 第三行描述一个位数 ...
- [ C++ 快速高精度模板 ] [ BigN类 ] 大整数类 高精度 模板 BigInt FFT 快速傅里叶变换
[原创 转载请注明]瞎写的,如果代码有错,或者各位大佬有什么意见建议,望不吝赐教 更新日志: 对于规模较小的整数乘法使用$$O(n^2)$$方法,提高速度 modify()和operator[]的bu ...
随机推荐
- Linux--Centos7开机启动 mysql5.7.19
参考:http://www.cnblogs.com/Anker/p/3551508.html
- Java 知识点(一)
博主对 Java知识点的整理基于 c语言,整理内容为 Java的重点及与 c语言的差异点或编程通要知识点.水平有限,欢迎指正.(参考书籍<Java 核心技术 卷Ⅰ>) Java 的类名:名 ...
- 到头来还是逃不过Java - 流程控制
流程控制 没有特殊说明,我的所有这个系列的Java13的笔记都是从廖老师那里摘抄.总结过来的,侵删 引言 兜兜转转到了大四,学过了C,C++,C#,Java,Python,学一门丢一门,到了最后还是要 ...
- js 输出语句document.write()及动态改变元素中内容innerHTML的使用
操作 HTML 元素 如需从 JavaScript 访问某个 HTML 元素,您可以使用 document.getElementById(id) 方法. 请使用 "id" 属性来标 ...
- CEO、COO、CFO、CTO、CIO是什么意思/?
CEO Chief Executive Officer 首席执行官 COO Chief Operating Officer 首席运营官 CFO Chief Financial Officer 首席财务 ...
- 吴裕雄--天生自然深度学习TensorBoard可视化:改造后的mnist_train
import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data INPUT_NODE = 784 ...
- C#判断两个字符串是否相等的方法 ,还有char赋空值办法。
string str1="Test"; string str2 = "Test"; if (str1==str2) //第一种判断方式 { //第二种判断方式 ...
- 利用FastJson,拼接复杂嵌套json数据&&直接从json字符串中(不依赖实体类)解析出键值对
1.拼接复杂嵌套json FastJson工具包中有两主要的类: JSONObject和JSONArray ,前者表示json对象,后者表示json数组.他们两者都能添加Object类型的对象,但是J ...
- jq轮播图
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Tooltips2
#include<windows.h> #include<Commctrl.h> #include"resource.h" #pragma comment( ...