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

洛谷P2142高精度减法题解

P2142 高精度减法

题目描述

高精度减法。

输入格式

两个整数 a , b a,b a,b(第二个可能比第一个大)。

输出格式

结果(是负数要输出负号)。

输入输出样例 #1

输入 #1

2
1

输出 #1

1

说明/提示

  • 20 % 20\% 20% 数据 a , b a,b a,b 在 long long 范围内;
  • 100 % 100\% 100% 数据 0 < a , b ≤ 1 0 10086 0<a,b\le 10^{10086} 0<a,b1010086

错误示范
这题,可不是平常我们开个long long就可以通过的简单的减法题目:

#include<bits/stdc++.h>
using namespace std;
long long a, b;
int main(){cin >> a >> b;cout << a - b;return 0;
}

结果:
在这里插入图片描述
这是因为题目说

100 % 100\% 100% 数据 0 < a , b ≤ 1 0 10086 0<a,b\le 10^{10086} 0<a,b1010086

但是我们开的long long只可以保存到第 19 19 19 位。
题目的数据范围可是 1 1 1 后面跟着 10087 10087 10087 0 0 0 啊!


让我们重新审视一下这道题目:

  • 题目的数据范围很大,所以可以使用字符串来保存输入的两个超大数。
  • 虽然数据范围很大,但也只不过是 1 0 10086 10^{10086} 1010086 ,可以用数组记录每个位(末尾对齐,所以要倒着记录)。
  • 记录之前要前判断一下是不是负数,是负数的话就交换两个字符串然后先输出一个负号。
  • 记录完之后运算的时候要考虑一下借位
  • 运算完还要循环去掉前导零,因为如果零在数字开头在数学界是违规的!
  • 最后倒着输出就可以了!!!!

你们最喜欢的代码区!

#include<bits/stdc++.h>
#define int long long
using namespace std;
string str1, str2;
int a[20000], b[20000], len1, len2, len;
int check(string a, string b){if(a.size() > b.size()) return 1;if(a.size() < b.size()) return -1;for(int i = 0; i < a.size(); i ++){if(a[i] > b[i]) return 1;if(a[i] < b[i]) return -1;}return 0;
}
signed main(){cin >> str1 >> str2;if(check(str1, str2) == -1){swap(str1, str2);cout << '-';}len1 = str1.size();len2 = str2.size();len = max(len1, len2);for(int i = 0; i < len1; i ++){a[len1 - i] = str1[i] - '0';}for(int i = 0; i < len2; i ++){b[len2 - i] = str2[i] - '0';}for(int i = 1; i <= len; i ++){a[i] = a[i] - b[i];if(a[i] < 0){a[i + 1] --;a[i] += 10;}}while(a[len] == 0 && len > 1)len --;for(int i = len; i >= 1; i --)cout << a[i];return 0;
}

在这里插入图片描述
AC了!

求关注!求点赞!求评论!
在这里插入图片描述

相关文章:

  • 浅析localhost、127.0.0.1 和 0.0.0.0的区别
  • 在spark里通过jps命令,看到的进程
  • 如何防止丝杆支撑座锈蚀?
  • XSS靶场实战(工作wuwuwu)
  • Python 重构“策略”模式:用函数简化设计模式的实践
  • 【图片识别改名】批量读取图片区域文字识别后批量改名,基于Python和腾讯云的实现方案
  • 1.5 点云数据获取方式——双目立体相机
  • Uniapp:设置页面下拉刷新
  • 服务器远程超出最大连接数的解决方案是什么?
  • 基于C++的IOT网关和平台1:github项目ctGateway
  • 基于DrissionPage的实习信息爬虫改造与解析
  • nginx配置集群服务器中的tcp负载均衡器
  • 中国飞机迎来历史性窗口,航空装备研制不断突破,智能化升级成为核心驱动力
  • nginx核心功能
  • 微服务开发中的应用生命周期管理
  • Javscript 字符串的常用方法有哪些?
  • k8s 学习记录 (六)_Pod 污点和容忍性详解
  • 20250429 垂直地表发射激光测量偏转可以验证相对性原理吗
  • Lua 第14部分 数据结构
  • 【论文阅读】PEEKABOO: Interactive Video Generation via Masked-Diffusion
  • 体坛联播|欧冠半决赛阿森纳主场不敌巴黎,北京男篮险胜山西
  • 巴西外长维埃拉:国际形势日益复杂,金砖国家必须发挥核心作用
  • 豆神教育:2024年净利润1.37亿元,同比增长334%
  • 深入贯彻中央八项规定精神学习教育中央指导组培训会议召开
  • 中方发布《不跪!》视频传递何种信息?外交部回应
  • 葡萄牙、西班牙发生大范围停电