已知:第一个数字大于第二个数字。
#include <iostream>
#include <vector>
using namespace std;
// 1004
// 45
// 959
// 114
// 45
// 69
string subtract(string a, string b) {
if (a == "") {
return "";
}
if (b == "") {
return "";
}
string result = "";
int i = a.size() - 1;
int j = b.size() - 1;
int borrow = 0;
while(j >= 0) {
if (a[i] - borrow >= b[j]) {
result += a[i] - borrow - b[j] + '0';
borrow = 0;
} else {
result += a[i] - borrow + 10 - b[j] + '0';
borrow = 1;
}
i--;
j--;
}
// 处理被减数剩余的位数
while (i >= 0) {
if (a[i] == '0') {
if (borrow == 1) {
result += '9';
borrow = 1;
} else {
result += a[i] - borrow;
borrow = 0;
}
} else {
if (a[i] - borrow >= 0) {
result += a[i] - borrow;
borrow = 0;
} else {
result += a[i] - borrow;
borrow = 1;
}
}
i--;
}
// 去掉后面的 0
int cnt = 0;
i = result.size() - 1;
while (i >= 0 && result[i] == '0') {
i--;
cnt++;
}
result = result.substr(0, result.size()-cnt);
// 逆序
reverse(result.begin(), result.end());
return result;
}
int main() {
cout << subtract("2", "1") << endl;
cout << subtract("304", "45") << endl;
cout << subtract("1004", "45") << endl;
cout << subtract("114", "45") << endl;
return 0;
}