用 vs 写的马蜂有点丑。
#include <iostream>
#include <string>
#include <vector>
#include <cmath>
#define int long long
using namespace std;
inline string sub(string a, string b) {
string z("");
if ((a.size() < b.size()) || (a.size() == b.size() && a < b)) {
swap(a, b);
z += "-";
}
int la = a.size(), lb = b.size(), lm = max(la, lb);
vector<int> f(lm + 7, 0);
for (int i = 0;i < la;i++) f[i] = a[la - 1 - i] - '0';
for (int i = 0;i < lb;i++) {
if (f[i] - b[lb - 1 - i] + '0' < 0) {
--f[i + 1];
f[i] += 10;
}
f[i] = f[i] - b[lb - 1 - i] + '0';
}
int k = 0;
for (int i = lm + 5;i >= 0;i--) {
if (f[i] != 0) {
k = i;
break;
}
}
for (int i = k;i >= 0;i--) {
z += char(f[i] + '0');
}
return z;
}
signed main() {
string a, b;
cin >> a >> b;
cout << sub(a, b);
return 0;
}