news 2026/4/3 3:21:11

高精度减法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
高精度减法

当在减法计算中,有时候数很大,当超出long long 的范围的时候,我们需要利用高精度算法来计算。

此时我们不在利用int/long long 来存储数据,而是用string来存储数据。用字符串存储两个很大的整数,在用数组存储数据之前,需要进行判断,减数和被减数谁更大,谁大把谁当成被减数(如果被减数<减数,最后在前面加一个负号即可),之和再开辟两个数组,把两个字符串里面存储的数字逆序存储在int数组中,(保证两个数字的低位对齐,方便计算),之和再遍历长度最长的那个数据,让两个数组对应下标的值相减,这个时候会产生借位问题,(以十进制为例)当被减数该下标的值小于减数该下标的值,就让该下标+1对应的值减一,该下标的值+10,之后再喝减数该下标的值相减(其他进制(n进制)只需要把10换成n即可(16进制除外,需要转换字母));

在输出的时候,要注意可能会有前导0(就是比如222和221,按以上方法会输出001,我们需要删除前面的两个0),删除前导0之后在进行输出(注意如果前面被除数和除数进行了交换,需要加负号),具体代码/注释如下

#include<bits/stdc++.h> using namespace std; int main() { //用数组模拟高精度 //整型数组 //反转存储:低位对齐 //高精度算法只能输入字符串 string s1, s2; cin >> s1 >> s2; int flag = 1; //标记(判断什么时候两个数交换) //当第二个数大于第一个数的时候,两数交换,(让大数减小数) //不能直接s2>s1因为当两个字符串的长度不一样的时候,且第一个字符串的前几个字符比s2大的时候,就无法正确比较 if ((s2>s1&&s1.size()==s2.size())||s2.size()>s1.size()) { string s3; s3 = s2; s2 = s1; s1 = s3; flag = 0; } int lmax = max(s1.size(), s2.size()); vector<int> vec3(lmax + 2); vector<int> vec1(lmax+2); vector<int> vec2(lmax+2); //给两数组赋值 for (int i = 0; i < s1.size();i++) { vec1[s1.size() - i] = s1[i]-'0'; //赋值为和字符‘0’的差值,不可以使用stoi,因为这是字符转数字 } for (int i = 0; i < s2.size(); i++) { vec2[s2.size() - i] = s2[i]-'0'; } for (int i = 1; i <= lmax;i++) { if (vec1[i]<vec2[i]) { //当被减数当位数字小于减数当位数字,就需要借位 vec1[i + 1]--; //借位 vec1[i] += 10; //(n进制把10换成n) } vec3[i] = vec1[i] - vec2[i]; } while (vec3[lmax]==0&&lmax>1) { //因为数组从下标1开始存的数,所以lmax得大于1 lmax--; //删除高位的0 } if (!flag) { //如果满足上面交换就需要加负号 cout << "-"; } for (int i = lmax; i >= 1;i--) { cout << vec3[i]; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/31 3:42:02

【2026】 LLM 大模型系统学习指南 (27)

通用模型的终身学习&#xff1a;四大核心技术让模型持续进化 通用模型的终身学习&#xff0c;核心是让模型在 “不遗忘旧知识” 的前提下&#xff0c;持续吸收新知识、修正错误、融合多领域能力 —— 就像人终身学习一样&#xff0c;既能巩固过往经验&#xff0c;又能适应新场…

作者头像 李华
网站建设 2026/3/16 9:22:12

微软Maia 200芯片发布,AI推理性能提升三倍

微软公司近日发布了第二代定制人工智能处理器Maia 200&#xff0c;宣称这是迄今为止所有公有云基础设施提供商中最强大的芯片。微软表示&#xff0c;在某些流行的AI基准测试中&#xff0c;Maia 200的计算性能是亚马逊云服务最先进Trainium处理器的三倍&#xff0c;在其他一些测…

作者头像 李华
网站建设 2026/3/25 20:02:00

爆火的个人AI助手Moltbot完全指南

AI热潮的最新浪潮为我们带来了一个意外的吉祥物&#xff1a;一只龙虾。个人AI助手Clawdbot在推出几周内就迅速走红&#xff0c;尽管因为Anthropic公司的法律挑战而不得不更名为Moltbot&#xff0c;但它仍然保持着甲壳动物的主题。在你跟风使用之前&#xff0c;这里有一些你需要…

作者头像 李华
网站建设 2026/3/20 7:52:20

大模型就是死胡同:一只松鼠为何比万亿参数更聪明?

想象一只普通松鼠在森林中跳跃觅食。它未读物理教材&#xff0c;也无海量数据训练&#xff0c;却能精准判断枝条承重、风向影响和落地轨迹。反观今日万亿参数大语言模型&#xff0c;连基本物理常识都可能出错。这荒谬对比&#xff0c;竟出自图灵奖得主、强化学习之父Richard Su…

作者头像 李华
网站建设 2026/3/24 5:38:35

法律文书智能生成:AI原生文本应用在司法领域的落地实践

法律文书智能生成&#xff1a;AI原生文本应用在司法领域的落地实践 副标题&#xff1a;基于大语言模型与法律知识工程的端到端解决方案 摘要/引言 问题陈述 法律文书是司法活动的核心载体&#xff08;如判决书、起诉状、答辩状&#xff09;&#xff0c;但其写作过程长期面临三大…

作者头像 李华
网站建设 2026/3/24 8:10:38

同城配送调度系统实战:JAVA微服务

基于 SpringCloud Vue3 的同城跑腿系统架构设计与实现一、项目背景与业务场景随着即时配送市场的快速发展&#xff0c;同城跑腿配送系统已成为连接商户、骑手与用户的重要桥梁。此类系统需具备高并发、低延迟、高可用等特性&#xff0c;同时支持订单实时追踪、智能调度、多端协…

作者头像 李华