博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UOJ#34 FFT模板题
阅读量:6499 次
发布时间:2019-06-24

本文共 1538 字,大约阅读时间需要 5 分钟。

写完上一道题才意识到自己没有在博客里丢过FFT的模板……

这道题就是裸的多项式乘法,可以FFT,可以NTT,也可以用Karasuba(好像有人这么写没有T),也可以各种其他分治乘法乱搞……
所以我就直接给板子了

#include 
#include
#define MAXN 300005#define DB double#define pi 3.14159265358struct cp { DB x, y; cp(){} cp(DB a, DB b):x(a), y(b){} cp operator + (const cp &r) const { return cp(x+r.x, y+r.y); } cp operator - (const cp &r) const { return cp(x-r.x, y-r.y); } cp operator * (const cp &r) const { return cp(x*r.x - y*r.y, x*r.y+y*r.x); }} a[MAXN], b[MAXN], tmp;inline void Swap(cp &a, cp &b) { tmp=a; a=b; b=tmp; }int n, m;inline void fft(cp *a, int f) { for(int i = 0, j = 0; i < n; ++ i) { if(i > j) Swap(a[i], a[j]); for(int l = (n>>1); (j^=l) < l; l >>= 1); } for(int i = 1; i < n; i <<= 1) { cp wn(cos(pi/i), f*sin(pi/i)); for(int j = 0; j < n; j += i<<1) { cp w(1, 0); for(int k = 0; k < i; ++ k, w = w * wn) { cp x = a[j + k], y = w * a[j + k + i]; a[j + k] = x + y; a[j + k + i] = x - y; } } } if(-1 == f) for(int i = 0; i < n; ++ i) a[i].x /= n;}int main() { scanf("%d%d", &n, &m); for(int i = 0; i <= n; ++ i) scanf("%lf", &a[i].x); for(int i = 0; i <= m; ++ i) scanf("%lf", &b[i].x); for(m = n+m, n = 1; n <= m; n <<= 1); fft(a, 1); fft(b, 1); for(int i = 0; i <= n; ++ i) a[i] = a[i] * b[i]; fft(a, -1); for(int i = 0; i <= m; ++ i) printf("%d ", (int)(a[i].x+0.1));}

转载于:https://www.cnblogs.com/geng4512/p/5296860.html

你可能感兴趣的文章
yii1框架,事务使用方法
查看>>
css3箭头效果
查看>>
北斗时钟在国内各行业的应用前景
查看>>
(原创)JAVA注解应用——实现属性的自动检测
查看>>
Python学习笔记【第一篇】:认识python和基础知识
查看>>
this关键字
查看>>
【C#小知识】C#中一些易混淆概念总结(三)---------结构,GC,静态成员,静态类...
查看>>
CC2540 OSAL 学习其中原理,以及 给任务 添加 一个事件(定时发送串口消息)
查看>>
MySQL安装使用的2个问题
查看>>
02-NLP-01-python正则表达式
查看>>
AjaxFileUpload文件上传组件(php+jQuery+ajax)
查看>>
向量的基本运算
查看>>
the folder is already a source folder.
查看>>
2014年度加班时间
查看>>
Entity Framework Tutorial Basics(13):Database First
查看>>
mysql+mycat搭建稳定高可用集群,负载均衡,主备复制,读写分离
查看>>
静态属性和静态方法2 - C++快速入门22
查看>>
用Ajax请求服务器的图片,并显示在浏览器中(转)
查看>>
带有用户名密码验证的远程文件下载
查看>>
【cocos2d-js官方文档】九、cc.loader
查看>>