洛谷 P1919 模板】A*B Problem升级版(FFT快速傅里叶)
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快速傅里叶)相关推荐
- 洛谷 P1919 【模板】A*B Problem升级版 【快速傅里叶变换 FFT】
[洛谷 P1919] [模板]A*B Problem升级版 题目大意 给你两个超大整数 a,ba,ba,b,问 a∗ba*ba∗b 其中 a,b≤101000000a,b\leq10^{1000000 ...
- 洛谷试炼场 P1553 数字反转(升级版)题解
洛谷试炼场 P1553 数字反转(升级版)题解 [c] 题目描述 给定一个数,请将该数各个位上数字反转得到一个新数. 这次与NOIp2011普及组第一题不同的是:这个数可以是小数,分数,百分数,整数. ...
- 洛谷 P1919 【模板】A*B Problem升级版(FFT快速傅里叶)
题目链接:P1919 [模板]A*B Problem升级版(FFT快速傅里叶) 题意 给定两个 \(n\) 位 \(10\) 进制整数 \(x\) 和 \(y\),求 \(x*y\). 思路 FFT ...
- 洛谷P1919 【模板】A*B Problem升级版(FFT快速傅里叶)
题目描述 给出两个n位10进制整数x和y,你需要计算x*y. 输入输出格式 输入格式: 第一行一个正整数n. 第二行描述一个位数为n的正整数x. 第三行描述一个位数为n的正整数y. 输出格式: 输出一 ...
- 洛谷-P1478-陶陶摘苹果(升级版)
陶陶摘苹果(升级版) - 洛谷 解题思路: 1.由题意得,和我们之前做过的摘苹果多了一个力气, 分析,肯定是先挑所费力气较小的苹果取摘(贪心) 并且可以够的到这个苹果的话 2. 所以创建一个结构体数组 ...
- 专题·树链剖分【including 洛谷·【模板】树链剖分
初见安~~~终于学会了树剖~~~ [兴奋]当初机房的大佬在学树剖的时候我反复强调过:"学树剖没有前途的!!!" 恩.真香. 一.重链与重儿子 所谓树剖--树链剖分,就是赋予一个链的 ...
- 洛谷·【模板】点分树 | 震波【including 点分树
初见安-这里是传送门:洛谷P6329 [模板]点分树 | 震波 一.点分树 其实你会点分治的话,点分树就是把点分治时的重心提出来重新连城一棵树. 比如当前点是u,求出子树v的重心root后将root与 ...
- 【洛谷】P1001 A+B Problem
这种简单的题目怎么能少的了我呢,嘿嘿 题目描述 输入两个整数 x,yx,y,输出它们的和(|x|,|y| \le {10}^9)(∣x∣,∣y∣≤109). 输入格式 一行,两个整数x,yx,y, 0 ...
- 洛谷P1919 【模板】A*B Problem升级版(FFT)
传送门 话说FFT该不会真的只能用来做这种板子吧-- 我们把两个数字的每一位都看作多项式的系数 然后这就是一个多项式乘法 上FFT就好了 然后去掉前导零 (然而连FFT的板子都背不来orz,而且空间又 ...
最新文章
- mvc存储Cookie和读取Cookie方法
- mongodb 结果二次调用_mongodb慢查询记录
- 邬贺铨院士:边缘计算“新十问”
- IntelliJ IDEA导入多个eclipse项目到同一个workspace下
- asp.net中使用窗体身份验证
- hive 语句总结_大数据分析工程师面试集锦4-Hive
- 新建linux组、用户命令
- 2021牛客多校5 - Double Strings(dp+组合数学)
- Linux记录-salt命令
- 骁龙820和KryoCPU:异构计算与定制计算的作用 【转】
- ggplot2设置坐标轴范围_R语言数据可视化| ggplot2中会“分身术”的facet_wrap()与facet_grid()...
- CodeForces - 1141ESuperhero Battle简单模拟
- 企业微信添加机器人播报天气
- xlwings,让excel飞起来!
- JS判断手机浏览器(转)
- php一句话跨域,php跨域怎么解决
- nvme linux raid,牛气!博通的NVMe RAID卡
- Kubernetes 健康状态检查liveness和readiness
- 图标、图片、矢量图注册,通过名称来配置icon可以提高性能
- GYM 100827 A.Runes(水~)
热门文章
- 域名前缀和后缀html,为什么域名前要加www前缀,www是什么意思? - 立金哥
- sprd bootloader 分析流程
- Spring Cloud项目是如何读取bootstrap.properties文件的?
- 学习笔记(01):3华为工程师 ,带你实战C++(2018版)-09面向对象的思想实战
- 【随笔】编程能力和程序员
- 沉舟侧畔千帆竞,百舸争流稳为先——正雅齿科
- mybatis中实现动态SQL
- 淘宝-51CTO学院-01-概述 - OpenCV介绍与环境搭建
- 科技新品 | 富士胶片研发出全球最大容量数据流磁带;iGame发布内存新品“古德白”...
- 科技的成就(二十七)