博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[模板] 快速傅里叶变换/FFT/NTT
阅读量:6473 次
发布时间:2019-06-23

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

简介

FFT是多项式乘法的一种快速算法, 时间复杂度 \(O(n \log n)\).

FFT可以用于求解形如\(C_i = \sum_{j=0}^i A_jB_{i-j}\)的式子. 如果下标有偏差,可以通过平移, 翻转等方法化为上式.

Code

const int nmax=(int)3e6+50;const db pi=acos(-1.0);struct tcpx{db a,b;}c1[nmax],c2[nmax];tcpx operator+(tcpx a,tcpx b){return (tcpx){a.a+b.a,a.b+b.b};}tcpx operator-(tcpx a,tcpx b){return (tcpx){a.a-b.a,a.b-b.b};}tcpx operator*(tcpx a,tcpx b){return (tcpx){a.a*b.a-a.b*b.b,a.a*b.b+a.b*b.a};}int l,rev[nmax];void dft(tcpx *c,int n,int fl){    rep(i,0,n-1)if(i
>1]>>1)|((i&1)<<(l-1)); dft(c1,n,1),dft(c2,n,1); rep(i,0,n-1)c3[i]=c1[i]*c2[i]; dft(c3,n,-1); rep(i,0,n-1)c3[i].a=(c3[i].a/n);}//print as intager rep(i,0,n+m-2)cout<<(int)(c1[i].a+.5)<<' ';

转载于:https://www.cnblogs.com/ubospica/p/10279351.html

你可能感兴趣的文章
插件编译 版本问题
查看>>
android中TextView的阴影设置
查看>>
core dump相关
查看>>
Linux五种IO模型
查看>>
Bootstrap技术: 模式对话框的使用
查看>>
小知识,用myeclipes找jar
查看>>
in-list expansion
查看>>
设计原则(四):接口隔离原则
查看>>
基于react的滑动图片验证码组件
查看>>
iOS快速清除全部的消息推送
查看>>
java单例模式深度解析
查看>>
【学习笔记】阿里云Centos7.4下配置Nginx
查看>>
VuePress手把手一小時快速踩坑
查看>>
dnsmasq安装使用和体验
查看>>
学习constructor和instanceof的区别
查看>>
Vijos P1881 闪烁的星星
查看>>
ABP理论学习之领域服务
查看>>
Qt 控制watchdog app hacking
查看>>
让所有IE支持HTML5的解决方案
查看>>
RDD之五:Key-Value型Transformation算子
查看>>