90分,#10wa,检查我自己输出后,发现比原来多了一个3
查看原帖
90分,#10wa,检查我自己输出后,发现比原来多了一个3
832238
wgy17734894660楼主2023/10/8 21:44
#include<bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#define N 11000

using namespace std;

int aminusb(string a, string b, int *c) {
	int j1[N] = {0}, j2[N] = {0}, tmp = 0;
	int lena = a.length(), lenb = b.length(), lenm = lena;//lena必定最长 
	for (int i = 0; i < lena; i++) j1[i] = a[lena-i-1] - '0';
	for (int i = 0; i < lenb; i++) j2[i] = b[lenb-i-1] - '0';
	for (int i = 0; i < lenm; i++) {
		if (j1[i] < j2[i]) {
			j1[i+1] --;
			j1[i] += 10;
		}
		c[i] = j1[i] - j2[i];
	}
	return lenm;
}

int main(){
	string a, b;
	int c[N], len = 0;
	bool flag = false;
	cin >> a >> b;
	if (a < b && a.length() == b.length() || a.length() < b.length()) {
		swap(a, b);
		flag = true;
	}
	len = aminusb(a, b, c);
	while (c[len] == 0 && len > 0) len --;//len处的值为0则len-- 
	if (flag == true) cout << "-"; 
	for (int i = len; i >= 0; i --) {//前面已经处理len处为0情况,此处无需处理 
		cout << c[i];
	}
	if (len < 0) cout << "0";
	return 0;
}
2023/10/8 21:44
加载中...