[BZOJ2179]FFT快速傅立叶
[BZOJ2179]FFT快速傅立叶
题目大意:
求\(a\times b(1\le a,b\le10^{60000})\)。
思路:
FFT模板。
源代码:
#include<cmath>
#include<cstdio>
#include<cctype>
#include<complex>
#include<algorithm>
inline int getint() {register char ch;while(!isdigit(ch=getchar()));register int x=ch^'0';while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0');return x;
}
inline int getdigit() {register char ch;while(!isdigit(ch=getchar()));return ch^'0';
}
typedef std::complex<double> complex;
const double pi=M_PI;
const int N=131075;
int lim,ans[N];
complex a[N],b[N],c[N],omega[N],iomega[N];
inline void init_omega(const int &n) {for(register int i=0;i<n;i++) {omega[i]=(complex){cos(2*pi*i/lim),sin(2*pi*i/lim)};iomega[i]=conj(omega[i]);}
}
inline void fft(complex f[],complex w[],const int &n) {for(register int i=0,j=0;i<n;i++) {if(i>j) std::swap(f[i],f[j]);for(register int l=n>>1;(j^=l)<l;l>>=1);}for(register int i=2;i<=n;i<<=1) {const int m=i>>1;for(register int j=0;j<n;j+=i) {for(register int k=0;k<m;k++) {const complex z=f[j+m+k]*w[n/i*k];f[j+m+k]=f[j+k]-z;f[j+k]+=z;}}}
}
int main() {const int n=getint();for(register int i=0;i<n;i++) a[i]=getdigit();for(register int i=0;i<n;i++) b[i]=getdigit();std::reverse(&a[0],&a[n]);std::reverse(&b[0],&b[n]);for(lim=1;lim<n;lim<<=1);lim<<=1;init_omega(lim);fft(a,omega,lim);fft(b,omega,lim);for(register int i=0;i<lim;i++) {c[i]=a[i]*b[i];}fft(c,iomega,lim);for(register int i=0;i<lim;i++) {ans[i]=round(c[i].real()/lim);}int len=0;for(register int i=0;i<lim;i++) {if(ans[i]) len=i;ans[i+1]+=ans[i]/10;ans[i]%=10;}for(register int i=len;i>=0;i--) {printf("%d",ans[i]);}return 0;
}
转载于:https://www.cnblogs.com/skylee03/p/9323258.html
[BZOJ2179]FFT快速傅立叶相关推荐
- FFT快速傅立叶变换在示波器中的用法
大多数示波器上都有个FFT功能,也叫快速傅立叶变换,但很多人不了解这个功能是做什么用的,百度以后又会遇到各种各样的高数公式,看的一头雾水,遂而放弃这块知识. 我们来看百度百科的解释: FFT,即为快速 ...
- 如何使用计算机实现fft,快速傅立叶变换(FFT)的计算机实现..doc
快速傅立叶变换(FFT)的计算机实现. 信号与系统课程设计 --FFT的计算机实现 快速傅里叶变换(FFT)的计算机实现 赖智鹏 华中科技大学电气与电子工程学院0809班U200811806 Emai ...
- bzoj 2179 FFT快速傅立叶
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2179 注意进位的时候最好先把所有的都变成 int 再普通进位. #include<io ...
- FFT快速傅立叶变换
//最近突然发现博客园支持\(\rm\LaTeX\),非常高兴啊! 话说离省选只有不到五天了还在学新东西确实有点逗-- 切到正题,FFT还是非常神奇的一个东西,能够反直觉地把两个多项式相乘的时间复杂度 ...
- bzoj 2179 FFT快速傅立叶 FFT
题面 题目传送门 解法 题如其名-- 不妨将多项式的\(x^i\)变成\(10^i\),然后就是一个比较简单的FFT了 md读进来的是一个字符串,并且要倒序 最后注意进位问题 时间复杂度:\(O(n\ ...
- 数字信号处理FFT快速傅立叶变换MATLAB实现——实例
今天做作业的时候发现要对一个信号进行FFT变换,在网上找了半天也没找到个能看懂的(因为我太菜了),后来自己研究了一下,感觉一知半解的 起因是这道作业题 例题-满足奈奎斯特 我画了两个图,一个是原信号经 ...
- BZOJ_2179_FFT快速傅立叶_(FFT)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=2179 超大整数乘法 分析 FFT模板题. 把数字看成是多项式,x是10.然后用FFT做多项式乘 ...
- 解题报告(二)C、(darkBZOJ 2194) 快速傅立叶之二(FFT、卷积的概念、常用变换)
繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...
- JavaScript实现快速傅立叶变换FFT算法(附完整源码)
JavaScript实现快速傅立叶变换FFT算法(附完整源码) radianToDegree.js完整源代码 ComplexNumber.js完整源代码 bitLength.js完整源代码 fastF ...
最新文章
- LeetCode实战:盛最多水的容器
- php调用execute,php运行生命周期--脚本执行阶段 php_execute
- 神策数据丨九大行业数字化经营指南集锦,值 100% 收藏
- Matlab---寻找峰值函数
- 使用PaddleFluid和TensorFlow训练RNN语言模型
- MAC系统使用Homebrew安装nvm
- Skywalking部署常见问题以及注意事项
- Hudson持续集成工具v3.3.3
- 微信扫码访问网站调用默认浏览器打开如何实现?
- centos7.2 部署k8s集群
- Windows程序设计_Chap03_窗口与消息_学习笔记
- docker代理配置详解
- Linux下安装Redis——菜鸟入门教程
- 0xFFFF中的0x是什么意思
- 安装python之后电脑变卡_【Python】如何让电脑变卡?
- 8T磁盘阵列文件存储服务器 威联通,NAS私有云老司机折腾体验记 篇八:QNAP 威联通TR-004磁盘阵列外接盒使用教程...
- 私域运营第五讲:实体餐饮店如何通过搭建私域流量实现营收增长
- 交易所通用质押式回购
- Sonic-Pi 初体验
- KNN 及 matplotlib 数据归一化