只要减数或被减数末尾有0就可能出现一些错误
#include<iostream>
#include<bits/stdc++.h>
#include<string>
#include<map>
using namespace std;
//char a[99999],b[999999];
string a,b,c;
int d[999999],e[999999],f[999999],misc,maxsize,maxx;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>a>>b;
maxsize=max(a.size(),b.size());
//maxsize=max(strlen(a),strlen(b));
if(a.size()>=b.size()){
maxx=1;
}
for(int i=a.size()-1,j=1;i>=0;i--,j++){
d[j]=a[i]-'0';
}
for(int i=b.size()-1,j=1;i>=0;i--,j++){
e[j]=b[i]-'0';
}
/*for(int i=strlen(a)-1,j=1;i>=0;i--,j++){
d[j]=a[i]-'0';
}
for(int i=strlen(b)-1,j=1;i>=0;i--,j++){
e[j]=b[i]-'0';
}*/
if(maxx==1){
for(int i=1;i<=maxsize;i++){
f[i]=d[i]-e[i];
if(f[i]<0){
f[i]+=10;
f[i+1]-=1;
}
}
}else if(maxx!=1){
for(int i=1;i<=maxsize;i++){
f[i]=e[i]-d[i];
//cout<<f[i]<<endl;
if(f[i]<0){
f[i]+=10;
f[i+1]-=1;
}
}
cout<<"-";
for(int i=maxsize;i>=1;i--){
cout<<f[i];
}
return 0;
}
for(;!f[maxsize];) maxsize--;
for(int i=maxsize;i>=1;i--){
cout<<f[i];
}
return 0;
}