#include<bits/stdc++.h>
using namespace std;
bool isLarge(const string& a,const string& b) {
//这俩都大于0的
if (a.size() == b.size()) {
return a >= b;
}
return a.size() > b.size();
}
//这个函数return true代表a >= b 不然就 a < b
int main() {
//刚开始得判断谁大,不然这没法做,确实想不到怎么转
string a, b;
cin >> a >> b;
bool sign = true;//a >= b是true
if (!isLarge(a, b)) {
swap(a, b);
sign = false;
}
//这样之后就确保了a >= b
//开始高精度计算
int ib = b.size() - 1;//b的长度小于等于a
int ia = a.size() - 1;
int val;
while (ib >= 0) {
val = a[ia] - b[ib];
while(val < 0) {//需要借位了
val += 10;
--a[ia - 1];
}
//这样就拿到结果了
a[ia] = val + '0';
--ia; --ib;
}
int index = 0;
while (index < a.size() && a[index] == '0')index++;
if (index == a.size()) cout << 0 << endl;
else {
if (!sign) cout << "-" << a.substr(index);
else cout << a.substr(index) << endl;
}
return 0;
}
也不知道为啥错了...