当前位置: 首页 > news >正文

P1919 【模板】高精度乘法 | A*B Problem 升级版 (FFT)

题目描述

给你两个正整数 a,ba,ba,b,求 a×ba \times ba×b

输入格式

第一行一个正整数,表示 aaa
第二行一个正整数,表示 bbb

输出格式

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

输入输出样例 #1

输入 #1

83517934
327830610

输出 #1

27379735249159740

说明/提示

【数据范围】
1≤a,b≤1010000001\le a,b \le 10^{1000000}1a,b101000000

可能需要一定程度的常数优化。
数据由 NaCly_Fish 重造

思路

不难发现,数据量不允许适用高精度乘法,所以使用FFT将原本的 O(n2)O(n^2)O(n2) 的复杂度降低为 O(nlogn)O(nlogn)O(nlogn) 的复杂度,将数字的每一位转换成0-9的系数,然后直接套FFT模板求出每一位相乘的结果,然后进行位数处理。

题解

#include <bits/stdc++.h>
using namespace std;
const int N=3e6+10;
const double PI=acos(-1);
int ans[N];
struct cpx{double x, y;cpx operator+(const cpx& t)const{return {x+t.x, y+t.y};}cpx operator-(const cpx& t)const{return {x-t.x, y-t.y};}cpx operator*(const cpx& t)const{return {x*t.x-y*t.y, x*t.y+y*t.x};}
}A[N], B[N];
int R[N];void FFT(cpx A[],int n,int op){for(int i=0; i<n; ++i)R[i] = R[i/2]/2 + ((i&1)?n/2:0);for(int i=0; i<n; ++i)if(i<R[i]) swap(A[i],A[R[i]]);  for(int i=2; i<=n; i<<=1){cpx w1({cos(2*PI/i),sin(2*PI/i)*op});for(int j=0; j<n; j+=i){cpx wk({1,0});for(int k=j; k<j+i/2; ++k){cpx x=A[k], y=A[k+i/2]*wk;A[k]=x+y; A[k+i/2]=x-y; wk=wk*w1;}}}
}void solve(){string a,b;cin>>a>>b;int n = a.size()-1;int m = b.size()-1;for(int i=0; i<=n; i++){A[i].x=a[n-i]-'0';  }for(int i=0;i<=m;i++){B[i].x=b[m-i]-'0';}for(m=n+m,n=1;n<=m;n<<=1);FFT(A,n,1); FFT(B,n,1);for(int i=0;i<n;++i)A[i]=A[i]*B[i];FFT(A,n,-1);int t=0;int k=0;for(int i=0;i<n||t;++i){t+=(A[i].x/n+0.5);ans[k++]=t%10;t/=10;}while(k>1&&!ans[k-1])k--;for(int i=k-1;i>=0;i--)cout<<ans[i];cout<<endl;
}int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int t=1;// cin>>t;while(t--){solve();}return 0;
}
http://www.dtcms.com/a/598474.html

相关文章:

  • 网页游戏网站开发wordpress5.0.2安装
  • 阜新市建设学校管方网站注册保险代理公司需要什么条件
  • Plant Simulation 双深位立库开发系列教程-出库操作
  • python网站开发的优势wordpress 图集
  • 广州网站设计实力乐云seowordpress token插件
  • ofo的网站用什么做的app设计大赛
  • day11(11.11)——leetcode面试经典150
  • 十八个免费的舆情网站怎么做app推广
  • 将 Docker虚拟磁盘文件ext.vhdx迁移出C盘 ,更换到D盘
  • Linux--进程间通信(2)
  • 烟台品牌网站建设求职
  • byd APP逆向(AES白盒分析)
  • QueryWrapper 与 LambdaQueryWrapper 深度解析:优劣对比、选择指南及用户表实战案例
  • 【完整源码+数据集】车牌数据集,yolov8车牌检测数据集 7811 张,汽车车牌识别数据集,智慧交通汽车车牌识别系统实战教程
  • 婚庆网站策划便捷网站建设价格
  • 视频+教程 | 三位一体:MOI 数据源 + MO 向量存储 + Dify 应用层,构建企业级 RAG
  • 侨联网站建设网站开发实训报告总结2021
  • 怎么做会员积分网站房地产开发资质
  • 智能服务管理的临界点:当AI成为ITSM的“神经中枢”
  • 太原制作网站的公司百度云服务器做asp网站
  • 学途-人工智能机器学习课程
  • 什么是网站内页wordpress如何上传到服务器
  • 网站 宣传方案淘宝店铺 发布网站建设
  • 论find -group和-gid的区别
  • Spring Cloud中分布式事务的监控和日志使用小窍门
  • LeetCode(python)——560.和为k的子数组
  • cae毕业设计代做网站淮北论坛招聘最新消息兼职
  • 今天我们学习zabbix网络设备监控的配置
  • NRBO-XGBoost+SHAP分析+新数据预测!机器学习可解释分析不在发愁!提供9种混沌映射方法(tent、chebyshev、singer等)
  • 两学一做教育网站家政服务app软件开发