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

【算法】用字符串进行高精度运算

1、字符串模拟 n 进制数相加

要想模拟几进制想加,下面代码的 n 就是几。

class Solution {
public:string addBinary(string a, string b) {int t = 0;string ret("");int cur1 = a.size() - 1;int cur2 = b.size() - 1;while(cur1 >= 0 || cur2 >= 0 || t){if(cur1 >= 0) t += a[cur1--] - '0';if(cur2 >= 0) t += b[cur2--] - '0';ret += t % n + '0'; // 不要使用头插,效率低t /= n;}reverse(ret.begin(),ret.end());return ret;}
};

2、字符串模拟十进制数相乘

模拟竖式相乘的代码不好实现,先采用“无进位相加”,最后再处理进位:

1、先把两个数逆序,这样数位和下标可以一一对应

2、把一个数的某位数与另一个数的每一位数相乘,结果 += 到一个 tmp 数组,位置的下标是相乘的两个数的下标之和。

3、处理进位,从 tmp 数组第一个元素开始,每个元素 % 10 尾插到 ret 字符串,进位是该元素 / 10,把进位加到下一个元素,再对下一个元素重复该操作

4、最后一个元素处理完了,如果还有进位,尾插到字符串

5、逆序字符串后返回。

class Solution {
public:string multiply(string num1, string num2){if(num1[0] == '0' || num2[0] == '0') return "0";reverse(num1.begin(),num1.end());reverse(num2.begin(),num2.end());int m = num1.size();int n = num2.size();vector<int> tmp(m+n-1);for(int i = 0; i < m; i++){for(int j = 0; j < n; j++){tmp[i + j] += (num1[i] - '0') * (num2[j] - '0'); }}int carry = 0;string ret("");for(int i = 0; i < m+n-1; i++){ret += (tmp[i] + carry) % 10 + '0';carry = (tmp[i] + carry) / 10;}if(carry) ret += carry + '0';reverse(ret.begin(),ret.end());return ret;}
};

http://www.dtcms.com/a/460890.html

相关文章:

  • 企业网站建设多钱大型网站服务器价格
  • LeetCode 393 - UTF-8 编码验证
  • Ruby 条件判断
  • 车企数据治理平台化实战:从数据孤岛到全链路治理的架构演进
  • Subword分词方法的BPE与BBPE
  • 对比的网站建设注册网站需要营业执照吗
  • 郑州网站建设排行榜易语言网站做软件
  • npm error Could not resolve dependency:
  • arcgis矢量数据转为标准geojson格式
  • 解决 React 项目初始化(npx create-react-app)速度慢的 7 个实用方案
  • 第5篇 如何计算两个坐标点距离--opencv图像中的两个点
  • powerShell无法执行npm问题
  • npm install sqlite3时报错解决
  • Docker compose-配置阿里云DNS加速访问百炼大模型
  • 使用HTML和Python开发街霸游戏
  • npm相关知识
  • asp.net 网站提速.net做网站之前设置
  • 化妆品网站建设方案项目书手机网站模板建站
  • QT/C++中的哈希表
  • Java学习之旅第二季-14:super关键字与final关键字
  • 【Unity】uNet游戏服务端框架(一)服务端架构设计
  • 深圳企业营销型网站建设优创智汇高端网站建设
  • mysql数据库备份
  • 22.shell编程实战(一)
  • PyTorch、ONNX Runtime、Hugging Face、NVIDIA Triton 和 LangChain 五个概念的关系详解
  • 【云原生】Neo4j 图数据库从搭建到项目使用深度详解
  • 关于网站开发的技术博客女装网站模板
  • Kubernetes(K8s)全场景命令宝典:从新手入门到故障排查全覆盖
  • 基于protobuf实现网络版本通讯录(protobuf 0基础可看)
  • 开源3d数字人学习笔记2025