https://www.acwing.com/problem/content/794/
#include<iostream>
#include<vector>
#include<string>
using namespace std;
//判断大小
bool cmp(vector<int>a, vector<int>b)
{
if ( a.size() ! = b.size() ) return a.size() > b.size();
for( int i = a.size() - 1 ; i >= 0 ; i-- )
{
if(a[i] != b[i]) return a[i] > b[i];
}
return true;
}
//核心代码段
vector<int>sub(vector<int>a,vector<int>b)
{
vector<int>result;
for(int i = 0, t = 0; i<a.size(); i++)
{
t = a[i] - t;
if(i < b.size()) t -= b[i];
result.push_back((t + 10) % 10);
if (t >= 0) t = 0;
else t = 1;
}
while(result.back() == 0 && result.size() > 1) result.pop_back(); //去前导0
return result;
}
int main()
{
string a, b;
vector<int>c, d;
cin >> a >> b;
for(int i = a.size() - 1; i >= 0; i--) c.push_back(a[i] - '0'); //-'0'变成数字
for(int i = b.size() - 1; i >= 0; i--) d.push_back(b[i] - '0');
if(cmp(c, d))
{
auto C = sub(c, d);
for(int i = C.size() - 1; i >= 0; i--) printf("%d",C[i]);
}
else
{
cout<<"-";
auto C=sub(d,c);
for(int i=C.size()-1;i>=0;i--) printf("%d",C[i]);
}
return 0;
}