P2142 高精度减法

P2142 高精度减法

题目描述

高精度减法

输入格式

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

输出格式

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

输入输出样例

输入

1 
2
1

输出 #1

1

说明/提示

20%数据a,b在long long范围内

100%数据0<a,b≤10^10086

#include <iostream>
#include <string>
#include <algorithm>
#define MAX 10500
using namespace std;
int arr[MAX], brr[MAX], c[MAX];
void substract(string a, string b) {
	int flag = 0;
	if (a.size() < b.size() || a.size() == b.size() && a < b) {
		swap(a, b);
		flag = 1;
	}
	for (int i = a.size(); i > 0; --i)
		arr[i] = a[a.size() - i] - '0';
	for (int i = b.size(); i > 0; --i)
		brr[i] = b[b.size() - i] - '0';
	int c_size = max(a.size(), b.size());
	for (int i = 1; i <= c_size; ++i) {
		if (arr[i] < brr[i]) {
			arr[i + 1]--;
			arr[i] += 10;
		}
		c[i] = arr[i] - brr[i];
	}
	while (!c[c_size]) {
		c_size--;
	}
	if (flag)
		cout << "-";
	for (int i = c_size; i > 0; --i)
		cout << c[i];
	if (c_size < 1)
		cout << 0;
}
int main() {
	string a, b;
	cin >> a >> b;
	substract(a, b);
	return 0;
}

发布了144 篇原创文章 · 获赞 5 · 访问量 2451
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览