题面

题目传送门

解法

题如其名……

不妨将多项式的\(x^i\)变成\(10^i\),然后就是一个比较简单的FFT了

md读进来的是一个字符串,并且要倒序

最后注意进位问题

时间复杂度:\(O(n\ log\ n)\)

代码

#include <bits/stdc++.h>
#define N 1 << 18
using namespace std;
template <typename node> void read(node &x) {x = 0; int f = 1; char c = getchar();while (!isdigit(c)) {if (c == '-') f = -1; c = getchar();}while (isdigit(c)) x = x * 10 + c - '0', c = getchar(); x *= f;
}
const double pi = acos(-1);
struct Complex {double x, y;Complex (double tx = 0, double ty = 0) {x = tx, y = ty;}
} a[N], b[N];
char s1[N], s2[N];
int ans[N], rev[N];
Complex operator + (Complex a, Complex b) {return (Complex) {a.x + b.x, a.y + b.y};}
Complex operator - (Complex a, Complex b) {return (Complex) {a.x - b.x, a.y - b.y};}
Complex operator * (Complex a, Complex b) {return (Complex) {a.x * b.x - a.y * b.y, a.x * b.y + a.y * b.x};}
void getrev(int l) {for (int i = 0; i < (1 << l); i++)rev[i] = (rev[i >> 1] >> 1) | ((i & 1) << l - 1);
}
void FFT(Complex *a, int n, int key) {for (int i = 0; i < n; i++)if (i < rev[i]) swap(a[i], a[rev[i]]);for (int i = 1; i < n; i <<= 1) {Complex wn(cos(pi / i), key * sin(pi / i));for (int r = i << 1, j = 0; j < n; j += r) {Complex w(1, 0);for (int k = 0; k < i; k++, w = w * wn) {Complex x = a[j + k], y = w * a[i + j + k];a[j + k] = x + y, a[i + j + k] = x - y;}}}if (key == -1)for (int i = 0; i < n; i++) a[i].x /= n;
}
int main() {int n; read(n);scanf(" %s %s", s1, s2);for (int i = 0; i < n; i++)a[n - i - 1].x = s1[i] - '0', b[n - i - 1].x = s2[i] - '0';int len = 1, l = 0;while (len <= 2 * n - 2) len <<= 1, l++;getrev(l); FFT(a, len, 1), FFT(b, len, 1);for (int i = 0; i <= len; i++) a[i] = a[i] * b[i];FFT(a, len, -1);for (int i = 0; i <= len; i++) ans[i] = (int)(a[i].x + 0.5);for (int i = 0; i <= len; i++)ans[i + 1] += ans[i] / 10, ans[i] %= 10;while (len > 0 && ans[len] == 0) len--;for (int i = len; i >= 0; i--) cout << ans[i]; cout << "\n";return 0;
}

转载于:https://www.cnblogs.com/copperoxide/p/9478401.html

bzoj 2179 FFT快速傅立叶 FFT相关推荐

  1. [BZOJ2179]FFT快速傅立叶

    [BZOJ2179]FFT快速傅立叶 题目大意: 求\(a\times b(1\le a,b\le10^{60000})\). 思路: FFT模板. 源代码: #include<cmath> ...

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

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

  3. bzoj 2179 FFT快速傅立叶

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

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

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

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

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

  6. FFT快速傅立叶变换

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

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

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

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

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

  9. BZOJ 2179 [快速傅里叶变换 高精度乘法]

    2179: FFT快速傅立叶 Time Limit: 10 Sec  Memory Limit: 259 MB Submit: 3108  Solved: 1599 [Submit][Status][ ...

最新文章

  1. python 调用微软语音合成并保存为wav
  2. oracle audit for 11g
  3. 【ajax+php】动态展示4级单位(省、市、县、镇)
  4. arduino python firmate_processing firmata协议及数组训练
  5. 前端学习(727):冒泡排序原理
  6. 太多的想法,反而不是什么好兆头
  7. GDI+ 学习记录(28): 图像颜色的数据格式 - PixelFormat
  8. [转] Asp.net mvc 3 beta 新特性介绍
  9. Android SystemClock 应用
  10. python函数参数的引用传递_Python初学者笔记(八):函数参数的值传递和引用传递...
  11. 编写计算机取余程序_必须收藏,2020年专升本计算机常考知识点总结,抓分的关键点...
  12. 《编写高质量代码:改善Java程序的151条建议》读书笔记
  13. 分布式系统的Raft算法 1
  14. nekohtml转换html时标签变大写的问题
  15. postgresql添加postgis拓展模块
  16. eclipse svn下载并转为maven项目
  17. 计算机发展史的第五个阶段,信息技术的发展历程是怎样的? 信息技术的发展历程分五个阶段...
  18. linux学习心得范文
  19. 菜鸟之如何让项目跑起来(适合小白看,不是小白的不要进来看了,浪费时间)
  20. 杀戮间服务器未响应,杀戮间2打不开怎么办,游戏没反应的解决办法

热门文章

  1. uC/OS-II源码分析(总体思路 三)
  2. chmod g+s 、chmod o+t 、chmod u+s
  3. t-sne 流形_流形学习[t-SNE,LLE,Isomap等]变得轻松
  4. 才子佳人文学传统的戏拟与嘲仿
  5. 不是有效的win32应用程序_杀毒软件有坑!三分之二的安卓杀毒软件的“主业”并不是杀毒...
  6. 2020亚太杯数学建模_比赛 | 2020年APMCM亚太地区大学生数学建模竞赛
  7. 14英寸电脑长宽多少_连接4K显示器流行,带雷电3雷电4接口的笔记本要多少钱?...
  8. r语言聚类分析_图说层次聚类分析原理和R语言实现
  9. java停车收费系统 源码开源_Java开源商城源码推荐,从菜鸡到大神,永远绕不开的商城系统
  10. php命令执行无法重定向输出,php – CodeIgniter 3重定向功能无法正常工作