[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快速傅立叶相关推荐

  1. FFT快速傅立叶变换在示波器中的用法

    大多数示波器上都有个FFT功能,也叫快速傅立叶变换,但很多人不了解这个功能是做什么用的,百度以后又会遇到各种各样的高数公式,看的一头雾水,遂而放弃这块知识. 我们来看百度百科的解释: FFT,即为快速 ...

  2. 如何使用计算机实现fft,快速傅立叶变换(FFT)的计算机实现..doc

    快速傅立叶变换(FFT)的计算机实现. 信号与系统课程设计 --FFT的计算机实现 快速傅里叶变换(FFT)的计算机实现 赖智鹏 华中科技大学电气与电子工程学院0809班U200811806 Emai ...

  3. bzoj 2179 FFT快速傅立叶

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2179 注意进位的时候最好先把所有的都变成 int 再普通进位. #include<io ...

  4. FFT快速傅立叶变换

    //最近突然发现博客园支持\(\rm\LaTeX\),非常高兴啊! 话说离省选只有不到五天了还在学新东西确实有点逗-- 切到正题,FFT还是非常神奇的一个东西,能够反直觉地把两个多项式相乘的时间复杂度 ...

  5. bzoj 2179 FFT快速傅立叶 FFT

    题面 题目传送门 解法 题如其名-- 不妨将多项式的\(x^i\)变成\(10^i\),然后就是一个比较简单的FFT了 md读进来的是一个字符串,并且要倒序 最后注意进位问题 时间复杂度:\(O(n\ ...

  6. 数字信号处理FFT快速傅立叶变换MATLAB实现——实例

    今天做作业的时候发现要对一个信号进行FFT变换,在网上找了半天也没找到个能看懂的(因为我太菜了),后来自己研究了一下,感觉一知半解的 起因是这道作业题 例题-满足奈奎斯特 我画了两个图,一个是原信号经 ...

  7. BZOJ_2179_FFT快速傅立叶_(FFT)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=2179 超大整数乘法 分析 FFT模板题. 把数字看成是多项式,x是10.然后用FFT做多项式乘 ...

  8. 解题报告(二)C、(darkBZOJ 2194) 快速傅立叶之二(FFT、卷积的概念、常用变换)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  9. JavaScript实现快速傅立叶变换FFT算法(附完整源码)

    JavaScript实现快速傅立叶变换FFT算法(附完整源码) radianToDegree.js完整源代码 ComplexNumber.js完整源代码 bitLength.js完整源代码 fastF ...

最新文章

  1. LeetCode实战:盛最多水的容器
  2. php调用execute,php运行生命周期--脚本执行阶段 php_execute
  3. 神策数据丨九大行业数字化经营指南集锦,值 100% 收藏
  4. Matlab---寻找峰值函数
  5. 使用PaddleFluid和TensorFlow训练RNN语言模型
  6. MAC系统使用Homebrew安装nvm
  7. Skywalking部署常见问题以及注意事项
  8. Hudson持续集成工具v3.3.3
  9. 微信扫码访问网站调用默认浏览器打开如何实现?
  10. centos7.2 部署k8s集群
  11. Windows程序设计_Chap03_窗口与消息_学习笔记
  12. docker代理配置详解
  13. Linux下安装Redis——菜鸟入门教程
  14. 0xFFFF中的0x是什么意思
  15. 安装python之后电脑变卡_【Python】如何让电脑变卡?
  16. 8T磁盘阵列文件存储服务器 威联通,NAS私有云老司机折腾体验记 篇八:QNAP 威联通TR-004磁盘阵列外接盒使用教程...
  17. 私域运营第五讲:实体餐饮店如何通过搭建私域流量实现营收增长
  18. 交易所通用质押式回购
  19. Sonic-Pi 初体验
  20. KNN 及 matplotlib 数据归一化

热门文章

  1. Winform中设置ZedGraph当前所有曲线的颜色
  2. Java中使用UUID给图片命名的文件上传方法
  3. SpringBoot中整合Thymeleaf
  4. 软考-信息系统项目管理师-项目质量管理
  5. oracle用户、表空间操作常用命令
  6. 操作符和表达式的问题总结
  7. hadoop yarn 获取日志_在 YARN 中简化用户日志的管理和使用
  8. 神策数据受邀参加全国 APP 个人信息保护监管会
  9. 神策智能推荐 | 运营后台,你的智能分发“万能助手”
  10. 前端工程师必须知道的vue前端面试题目汇总