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

P1303 A*B Problem

题目背景

高精度乘法模板题。

题目描述

给出两个非负整数,求它们的乘积。

输入格式

输入共两行,每行一个非负整数。

输出格式

输出一个非负整数表示乘积。

输入输出样例

输入 

1 
2

输出 

2

说明/提示

每个非负整数不超过 102000。

代码

无注释版

#include<bits/stdc++.h>
using namespace std;
char a[10010],b[10010];
int p[10010],q[10010],s[10010];
int main(){memset(p,0,sizeof(p));memset(q,0,sizeof(q));memset(s,0,sizeof(s));cin>>a>>b;int n=strlen(a);int m=strlen(b);for(int i=0;i<n;i++) p[n-i]=a[i]-48;for(int i=0;i<m;i++) q[m-i]=b[i]-48;for(int i=1;i<=n;i++){int x=0;for(int j=1;j<=m;j++){s[i+j-1]=s[i+j-1]+x+p[i]*q[j];x=s[i+j-1]/10;s[i+j-1]%=10;}s[i+m]=x;}int len=n+m;while(s[len]==0&&len>1){len--;}for(int i=len;i>=1;i--){cout<<s[i];}
}

有注释版 

#include<bits/stdc++.h>
using namespace std;char a[10010], b[10010];  // 用于存储两个输入的大数
int p[10010], q[10010], s[20010];  // p 和 q 用于存储大数的数字形式,s 用于存储乘积结果int main() {memset(p, 0, sizeof(p));  // 初始化 p 数组memset(q, 0, sizeof(q));  // 初始化 q 数组memset(s, 0, sizeof(s));  // 初始化 s 数组,存储乘积结果cin >> a >> b;  // 输入两个大数int n = strlen(a);  // 获取第一个数的长度int m = strlen(b);  // 获取第二个数的长度// 将第一个大数的每一位数字存入 p 数组,注意反向存储for (int i = 0; i < n; i++) {p[n - i] = a[i] - 48;  // 将字符转为数字,并存储在 p 数组中}// 将第二个大数的每一位数字存入 q 数组,注意反向存储for (int i = 0; i < m; i++) {q[m - i] = b[i] - 48;  // 将字符转为数字,并存储在 q 数组中}// 逐位计算乘积for (int i = 1; i <= n; i++) {int x = 0;  // 存储进位// 对于 p[i] 和 q[j],计算乘积并加到结果数组 s 中for (int j = 1; j <= m; j++) {s[i + j - 1] = s[i + j - 1] + x + p[i] * q[j];  // 当前位乘积加上之前的进位x = s[i + j - 1] / 10;  // 更新进位s[i + j - 1] %= 10;  // 当前位的数字(对 10 取余)}s[i + m] = x;  // 更新最后的进位}// 去除多余的前导零int len = n + m;  // 乘积的最大位数是 n + mwhile (s[len] == 0 && len > 1) {len--;  // 如果最高位是 0,减小结果的位数}// 输出结果for (int i = len; i >= 1; i--) {cout i >= 1; i--) {cout << s[i];  // 从高位到低位输出}return 0;
}
http://www.xdnf.cn/news/6365.html

相关文章:

  • 山东大学计算机图形学期末复习7——CG11上
  • UDP 多点通信
  • 各编程语言对正则表达式标准的支持对比
  • 【Android】Android 实现一个依赖注入的注解
  • 碰一碰发视频源码搭建定制化开发,支持OEM
  • vue实现导出echarts图片和table表格
  • 用Python代码绘制动态3D爱心效果
  • 算法图表总结:查找、排序与递归(含 Mermaid 图示)
  • 《Navicat之外的新选择:实测支持国产数据库的SQLynx核心功能解析》
  • 人体肢体渲染-一步几个脚印从头设计数字生命——仙盟创梦IDE
  • C++ 基础知识点
  • 【软件工程】机器学习多缺陷定位技术分析
  • 关于NLP自然语言处理的简单总结
  • 【高频面试题】LRU缓存
  • PyTorch中.item()函数:提取单元素张量值
  • 2025认证杯数学建模A题思路+代码+模型:小行星轨迹预测
  • 机器学习 --- KNN算法
  • 基于大模型预测胃穿孔预测与围手术期管理系统技术方案
  • coze从入门到入土:excel表格批量导入数据库工作流制作【解决节点使用上限】 + API接口上传文件和用户需求
  • 11.软考高项(信息系统项目管理师)-干系人管理
  • 【hot100-动态规划-300.最长递增子序列】
  • 填报表之自动计算
  • QT6 源(101)阅读与注释 QPlainTextEdit,其继承于QAbstractScrollArea,属性学习与测试
  • 电脑桌面便签哪个好?2025年电脑免费用的便签软件推荐
  • 知识图谱系列(2):知识图谱的技术架构与组成要素
  • 全志F10c200开发笔记——移植uboot
  • C++ Mac 打包运行方案(cmake)
  • 论文中表格跨页该怎么整(如何给跨页表格添加标题和表头)
  • nestjs[一文学懂TypeORM在nestjs中的日常使用]
  • RabbitMQ 消息模式实战:从简单队列到复杂路由(二)