https://www.luogu.com.cn/problem/P1919
题目背景
本题数据已加强,请使用 FFT/NTT,不要再交 Python 代码浪费评测资源。

题目描述
给你两个正整数 a,ba,b,求 a \times ba×b。

输入格式
第一行一个正整数,表示 aa;
第二行一个正整数,表示 bb。

输出格式
输出一行一个整数表示答案。

输入输出样例
输入 #1复制
114514
1919810
输出 #1复制
219845122340
说明/提示
【数据范围】
1≤a,b≤1010000001\le a,b \le 10^{1000000}1≤a,b≤101000000
可能需要一定程度的常数优化。
数据由 NaCly_Fish 重造

#include<bits/stdc++.h>
#define MOD 1000000007
using namespace std;        //FFT模板//位数不同的高精度乘法const int maxn=1e6+5;struct Complex //复数类
{double x,y;Complex(double dx=0,double dy=0){x=dx;y=dy;}
};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);
}const double pi=acos(-1.0); //PI
int limit=1,bit=0; //limit为最终扩充的长度 limit = 1<<bit
int wz[maxn<<2];
int re[maxn<<2]; //存储结果
Complex a[maxn<<2],b[maxn<<2];
char s1[maxn],s2[maxn];//存储两个整数void FFT(Complex *A,int inv)
{for(int i=0;i<limit;i++)if(i<wz[i])swap(A[i],A[wz[i]]);for(int mid=1;mid<limit;mid<<=1){Complex wn(cos(pi/mid),inv*sin(pi/mid));for(int i=0;i<limit;i+=mid<<1){Complex w(1,0);for(int j=0;j<mid;j++,w=w*wn){Complex t1=A[i+j];Complex t2=w*A[i+mid+j];A[i+j]=t1+t2;A[i+mid+j]=t1-t2;}}}
}int main()
{while(~scanf("%s%s",s1,s2)){memset(wz,0,sizeof(wz));memset(a,0,sizeof(a));memset(b,0,sizeof(b));limit=1,bit=0;int temp;int len1=strlen(s1),len2=strlen(s2);int len=len1+len2;while(limit<=len){limit<<=1;bit++;}               //一个n位的十进制数 可以看做一个n-1次多项式for(int i=len1-1,j=0;i>=0;i--,j++){a[j].x=s1[i]-48;a[j].y=0;}for(int i=len2-1,j=0;i>=0;i--,j++){b[j].x=s2[i]-48;b[j].y=0;}for(int i=0;i<limit;i++)wz[i]=(wz[i>>1]>>1)|((i&1)<<(bit-1));FFT(a,1);FFT(b,1);for(int i=0;i<limit;i++)a[i]=a[i]*b[i];FFT(a,-1);memset(re,0,sizeof(re));for(int i=0;i<=limit;i++){re[i]+=(int)(a[i].x/limit+0.5);if(re[i]>=10) //进位{re[i+1]+=re[i]/10;re[i]%=10;if(i==limit)++limit;}}while(!re[limit]&&limit>=1)//去除高位的0limit--;while(limit>=0)printf("%d",re[limit--]);printf("\n");}return 0;
}

洛谷 P1919 模板】A*B Problem升级版(FFT快速傅里叶)相关推荐

  1. 洛谷 P1919 【模板】A*B Problem升级版 【快速傅里叶变换 FFT】

    [洛谷 P1919] [模板]A*B Problem升级版 题目大意 给你两个超大整数 a,ba,ba,b,问 a∗ba*ba∗b 其中 a,b≤101000000a,b\leq10^{1000000 ...

  2. 洛谷试炼场 P1553 数字反转(升级版)题解

    洛谷试炼场 P1553 数字反转(升级版)题解 [c] 题目描述 给定一个数,请将该数各个位上数字反转得到一个新数. 这次与NOIp2011普及组第一题不同的是:这个数可以是小数,分数,百分数,整数. ...

  3. 洛谷 P1919 【模板】A*B Problem升级版(FFT快速傅里叶)

    题目链接:P1919 [模板]A*B Problem升级版(FFT快速傅里叶) 题意 给定两个 \(n\) 位 \(10\) 进制整数 \(x\) 和 \(y\),求 \(x*y\). 思路 FFT ...

  4. 洛谷P1919 【模板】A*B Problem升级版(FFT快速傅里叶)

    题目描述 给出两个n位10进制整数x和y,你需要计算x*y. 输入输出格式 输入格式: 第一行一个正整数n. 第二行描述一个位数为n的正整数x. 第三行描述一个位数为n的正整数y. 输出格式: 输出一 ...

  5. 洛谷-P1478-陶陶摘苹果(升级版)

    陶陶摘苹果(升级版) - 洛谷 解题思路: 1.由题意得,和我们之前做过的摘苹果多了一个力气, 分析,肯定是先挑所费力气较小的苹果取摘(贪心) 并且可以够的到这个苹果的话 2. 所以创建一个结构体数组 ...

  6. 专题·树链剖分【including 洛谷·【模板】树链剖分

    初见安~~~终于学会了树剖~~~ [兴奋]当初机房的大佬在学树剖的时候我反复强调过:"学树剖没有前途的!!!" 恩.真香. 一.重链与重儿子 所谓树剖--树链剖分,就是赋予一个链的 ...

  7. 洛谷·【模板】点分树 | 震波【including 点分树

    初见安-这里是传送门:洛谷P6329 [模板]点分树 | 震波 一.点分树 其实你会点分治的话,点分树就是把点分治时的重心提出来重新连城一棵树. 比如当前点是u,求出子树v的重心root后将root与 ...

  8. 【洛谷】P1001 A+B Problem

    这种简单的题目怎么能少的了我呢,嘿嘿 题目描述 输入两个整数 x,yx,y,输出它们的和(|x|,|y| \le {10}^9)(∣x∣,∣y∣≤109). 输入格式 一行,两个整数x,yx,y, 0 ...

  9. 洛谷P1919 【模板】A*B Problem升级版(FFT)

    传送门 话说FFT该不会真的只能用来做这种板子吧-- 我们把两个数字的每一位都看作多项式的系数 然后这就是一个多项式乘法 上FFT就好了 然后去掉前导零 (然而连FFT的板子都背不来orz,而且空间又 ...

最新文章

  1. mvc存储Cookie和读取Cookie方法
  2. mongodb 结果二次调用_mongodb慢查询记录
  3. 邬贺铨院士:边缘计算“新十问”
  4. IntelliJ IDEA导入多个eclipse项目到同一个workspace下
  5. asp.net中使用窗体身份验证
  6. hive 语句总结_大数据分析工程师面试集锦4-Hive
  7. 新建linux组、用户命令
  8. 2021牛客多校5 - Double Strings(dp+组合数学)
  9. Linux记录-salt命令
  10. 骁龙820和KryoCPU:异构计算与定制计算的作用 【转】
  11. ggplot2设置坐标轴范围_R语言数据可视化| ggplot2中会“分身术”的facet_wrap()与facet_grid()...
  12. CodeForces - 1141ESuperhero Battle简单模拟
  13. 企业微信添加机器人播报天气
  14. xlwings,让excel飞起来!
  15. JS判断手机浏览器(转)
  16. php一句话跨域,php跨域怎么解决
  17. nvme linux raid,牛气!博通的NVMe RAID卡
  18. Kubernetes 健康状态检查liveness和readiness
  19. 图标、图片、矢量图注册,通过名称来配置icon可以提高性能
  20. GYM 100827 A.Runes(水~)

热门文章

  1. 域名前缀和后缀html,为什么域名前要加www前缀,www是什么意思? - 立金哥
  2. sprd bootloader 分析流程
  3. Spring Cloud项目是如何读取bootstrap.properties文件的?
  4. 学习笔记(01):3华为工程师 ,带你实战C++(2018版)-09面向对象的思想实战
  5. 【随笔】编程能力和程序员
  6. 沉舟侧畔千帆竞,百舸争流稳为先——正雅齿科
  7. mybatis中实现动态SQL
  8. 淘宝-51CTO学院-01-概述 - OpenCV介绍与环境搭建
  9. 科技新品 | 富士胶片研发出全球最大容量数据流磁带;iGame发布内存新品“古德白”...
  10. 科技的成就(二十七)