news 2026/7/13 18:23:23

高精度减法

作者头像

张小明

前端开发工程师

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/7/2 4:32:19

“把事办成“而非“只会聊天“:智能分析Agent如何让大模型真正落地企业场景,小白程序员也能秒变大神!

如果你在企业里做过经营分析&#xff0c;大概率经历过这样的场景&#xff1a; 周一早上&#xff0c;老板一句“上周增长怎么掉了&#xff1f;”——你打开报表、拉取数据、对齐口径、写SQL、做透视表、画图、开会解释&#xff1b;等你终于把“发生了什么”说清楚&#xff0c;业…

作者头像 李华
网站建设 2026/7/13 14:21:03

【GESP】C++五级练习题 luogu-P3353 在你窗外闪耀的星星

GESP C 五级练习题&#xff0c;贪心思想和前缀和思想考点。题目难度⭐⭐★☆☆&#xff0c;适合五级入门和四级练习&#xff0c;洛谷难度等级普及-。 luogu-P3353 在你窗外闪耀的星星 题目要求 题目题解详见&#xff1a;https://www.coderli.com/gesp-5-luogu-p3353/ https:…

作者头像 李华
网站建设 2026/7/8 4:32:02

血管生成调控靶点TNC

TNC&#xff08;Tenascin&#xff09;是一种富含细胞基质的糖蛋白&#xff0c;细胞外基质蛋白在发育过程中参与引导神经元和轴突迁移&#xff0c;也与突触可塑性及神经元再生相关。它能促进在星形胶质细胞单层上生长的皮质神经元的神经突生长。该蛋白是整合素α-8/β-1、α-9/β…

作者头像 李华
网站建设 2026/6/26 19:22:07

警惕!AI系统面临的7大安全威胁及防御策略

警惕&#xff01;AI系统面临的7大安全威胁及防御策略 一、引言 (Introduction) 钩子 (The Hook) 在当今数字化时代&#xff0c;AI 仿佛是一股无所不能的神奇力量&#xff0c;正以前所未有的速度渗透到我们生活的方方面面。从智能手机里能精准识别语音指令的语音助手&#xff0c…

作者头像 李华
网站建设 2026/6/26 19:22:08

巧用util.inspect定制对象输出 调试效率翻倍

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 目录 巧用util.inspect定制对象输出&#xff1a;调试效率翻倍 一、为何需要超越console.log&#xff1f; 二、深度解构&#xff1…

作者头像 李华
网站建设 2026/7/1 8:49:45

大数据领域 OLAP 的数据可视化工具选择

大数据领域 OLAP 的数据可视化工具选择 关键词:OLAP、数据可视化、大数据分析、BI工具、数据仓库、交互式分析、商业智能 摘要:本文深入探讨了大数据OLAP环境下的数据可视化工具选择策略。文章首先介绍了OLAP和数据可视化的基本概念,然后详细分析了主流可视化工具的技术架构…

作者头像 李华