能帮忙看看吗?
查看原帖
能帮忙看看吗?
505484
冬笙夏洛_楼主2021/4/24 19:57
#include<bits/stdc++.h>

using namespace std;

string sul(string a, string b) {
	//flag用来判断a,b哪个大
	int flag;
	if (a > b)
		flag = 1;
	else if (a < b)
		flag = 2;
	else
		flag = 0;

	if (flag == 0)
		return "0";

	string ans;
	int numa[10005] = {};
	int numb[10005] = {};

	int la = a.size();
	int lb = b.size();
	//逆序
	for (int i = la - 1;i >= 0;i--)
		numa[la - i - 1] = a[i] - '0';

	for (int i = lb - 1;i >= 0;i--)
		numb[lb - i - 1] = b[i] - '0';

	//a比较大
	if (flag == 1) {
		for (int i = 0;i < la;i++) {
			numa[i] -= numb[i];
			if (numa[i] < 0) {
				numa[i + 1]--;
				numa[i] += 10;
			}
		}
		while (numa[la - 1] == 0) {
			la--;
		}
		for (int i = la - 1;i >= 0;i--) {
			ans += numa[i] + '0';
		}
		return ans;

	}

	//b比较大
	if (flag == 2) {
		ans = "-";
		for (int i = 0;i < lb;i++) {
			numb[i] -= numa[i];
			if (numb[i] < 0) {
				numb[i + 1]--;
				numb[i] += 10;
			}
		}
		while (numb[lb - 1] == 0) {
			lb--;
		}
		for (int i = lb - 1;i >= 0;i--) {
			ans += numb[i] + '0';
		}
		return ans;

	}


	return  ans;
}
int main() {
	string a, b;
	cin >> a >> b;
	cout << sul(a, b) << endl;

	return 0;
}

2021/4/24 19:57
加载中...