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

一本通1307:【例1.3】高精度乘法 1308:【例1.5】高精除

Topic:

Ideas:

此题的关键是要模拟竖式运算,竖式运算是一种直观的分步计算方式,适用于需要按位操作的四则运算,通常用于整数的加、减、乘、除等运算。因为竖式运算一般是从后往前算,因此我们在把字符串转成数组时需要倒序存储。

高精度乘法:

1.倒序存储:将数字字符串反转存入数组(如 "123" → [3, 2, 1]),低位在前。

2.逐位相乘:用乘数的每一位乘以被乘数的每一位,结果按位累加(注意进位)。

3.结果合并:累加所有部分积,处理最终进位,逆序输出结果。

高精度除法:

1.倒序存储:同乘法,低位在前。

2.试商循环:从被除数高位开始,逐段与除数比较,确定当前商的最大可能值。

3.减法更新:用当前部分被除数减去除数 × 商,得到余数,继续处理下一位。

4.逆序输出:商和余数均需逆序输出,去除前导零。

核心逻辑:

模拟手算乘法,逐位相乘后累加,进位自动处理。通过试商和减法模拟竖式,逐位确定商的值。简化进位 / 借位处理,下标直接对应位数。

Code:

//2025/05/24
#include<iostream>
using namespace std;
string a, b;
int aa[205];//乘数1
int bb[205];//乘数2
int cc[405];//结果
int main() {cin >> a >> b;//字符串转数组for (int i = 0; i < a.length();i++) {aa[a.length() - i] = a[i] - '0';}for (int i = 0; i <b.length(); i++) {bb[b.length() - i] = b[i] - '0';}//模拟竖式运算for (int i =1; i <= a.length();i++) {for (int j = 1; j <= b.length();j++) {cc[i + j - 1] += aa[i] * bb[j];cc[i + j] += cc[i + j - 1] / 10;cc[i + j - 1] %= 10;}}//计算结果最长长度int len = a.length() + b.length();if (cc[len] == 0)//如果首位为0,长度减1len--;for (int i = len; i >= 1; i--) {//逆序打印cout << cc[i];}return 0;
}
//2025/5/24
#include<ios
http://www.xdnf.cn/news/629785.html

相关文章:

  • 矩阵乘法--Python
  • Linux—进程池实现
  • 技术文档炼金术:从混乱到优雅的知识封装
  • 嵌入式工程师常用软件
  • React Native 拼音及拼音首字母搜索组件开发
  • 初识Vue【1】
  • 数据库调优与数据表的范式设计
  • C语言 动态内存管理(4)
  • SQL SERVER常用聚合函数整理及示例
  • 7.1查找的基本概念
  • 【samba和nfs的搭建】
  • MCP与AI模型的多语言支持:让人工智能更懂世界
  • 关于spring @Bean里调用其他产生bean的方法
  • Mybatis(2)
  • Oracle基础知识(四)
  • OpenLayers 加载测量控件
  • 网络安全零基础培训 JavaScript基础知识点
  • 传奇各种怪物一览/图像/爆率/产出/刷新地/刷新时间/刷怪时间
  • Compose 中的 LaunchedEffect
  • 深入了解linux系统—— 操作系统的路径缓冲与链接机制
  • 真实案例拆解:智能AI客服系统中的两类缓存协同
  • 由浮点数的位级表示判断大小关系
  • 人工智能100问☞第31问:如何评估一个AI模型的性能?
  • 【MySQL】索引
  • 【动态规划】P12223 [蓝桥杯 2023 国 Java B] 非对称二叉树|普及+
  • python打卡day35@浙大疏锦行
  • 【笔记】OpenCV的学习(未完)
  • CodeBuddy 实现图片转素描手绘工具
  • springboot中各模块间实现bean之间互相调用(service以及自定义的bean)
  • 符合Python风格的对象(使用 __slots__ 类属性节省空间)