救命啊,写了好久 #7就是过不了,排查不出问题
#include <iostream>
#include<sstream>
#include<algorithm>
#include<string>
using namespace std;
int stringCompare(string a,string b){
if(a.size()==b.size()){
if(a>b)return 1;
if(a<b) return -1;
else return 0;
}
if(a.size()>b.size())
return 1;
else return -1;
}
string bigsub(string a,string b){
if(a.find_first_not_of('0')!=string::npos)
a = a.substr(a.find_first_not_of('0'));
if(b.find_first_not_of('0')!=string::npos)
b = b.substr(b.find_first_not_of('0'));
long long lenA = a.length();
long long lenB = b.length();
long long len = max(lenA,lenB);
if(stringCompare(b,a)>0)
return "-"+bigsub(b,a);
string ans(len,'0');
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());
for(int i=0;i<lenA;i++){
ans[i]=a[i];
}
int num=0;
for(int i = 0;i<lenA;i++){
if(i<lenB){
num += (ans[i]-'0')-(b[i]-'0');
if(num<0){
num+=10;
ans[i]=num+'0';
num =-1;
}else{
ans[i]=num+'0';
num=0;
}
}else{
ans[i]+=num;
num=0;
}
}
reverse(ans.begin(),ans.end());
if(ans.find_first_not_of('0')!=string::npos)
ans=ans.substr(ans.find_first_not_of('0'));
else{
return "0";
}
return ans;
}
int main() {
string a;
string b;
cin>>a;
cin>>b;
cout<<bigsub(a,b)<<endl;
return 0;
}