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

洛谷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了!

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

http://www.xdnf.cn/news/3013.html

相关文章:

  • USB 网卡——RNDIS 控制消息流程
  • AbMole解密生物医学新材料---PCL-PVAc-PEG
  • AUTOSAR图解==>AUTOSAR_RS_InteroperabilityOfAutosarTools
  • 同步与互斥(同步)
  • 【android bluetooth 案例分析 03】【PTS 测试 】【PBAP/PCE/SSM/BV-02-C】
  • 数据中心网络架构:高效规划与自动化设计实践
  • Android 系统发展史
  • php学习笔记(全面且适合新手)
  • Android的Imageview的src属性,如果设置width和height,但是图片本身很小,那么图片会自动缩放到Imageview一样的大小吗
  • GEE进行Theil-Sen Median斜率估计和Mann-Kendall检验
  • RK3568下背光控制 软件与调试技巧
  • 使用 TypeScript 开发并发布一个 npm 包(完整指南)
  • 小刚说C语言刷题——1032分糖果
  • 守护天空安全的科技利剑鼎讯信通(ACNN)的创新实践
  • Flume启动报错
  • MIT6.S081 - Lab11 networking(网络栈)
  • 阿里千问Qwen3技术解析与部署指南 :混合推理架构突破性优势与对DeepSeek R1的全面超越
  • Scrapy框架之CrawlSpider爬虫 实战 详解
  • 23种设计模式-行为型模式之解释器模式(Java版本)
  • Leetcode 3529. Count Cells in Overlapping Horizontal and Vertical Substrings
  • 关于汇编语言与程序设计——子程序设计
  • Android WIFI体系
  • Vue基础(一) 基础用法
  • 【Delphi】简化数据库读写(Helper)
  • Canvas基础篇:绘制矩形
  • 废品回收小程序:全链路数字化解决方案,赋能绿色未来
  • SDC命令详解:使用get_nets命令进行查询
  • windows如何使用cmd命令翻转屏幕
  • 多源数据整合与数据虚拟化:构建灵活、高效的数据架构
  • RPG2.设置角色摄像机