include[HTML_REMOVED]
include[HTML_REMOVED]
using namespace std;
//用来判断内个数字更大,内个数字更小
bool cmp(vector[HTML_REMOVED]&A,vector[HTML_REMOVED]&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[HTML_REMOVED]sub( vector[HTML_REMOVED]&A, vector[HTML_REMOVED]&B){//这里传进来的数字是A必须大于B
vector<int>c;//用来储存结果的
int t=0;
for(int i=0;i<A.size();i++){
t=A[i]-t;//
if(i<B.size()) t=t-B[i];//有位数才进行减法运算啊,
//上述已经进行完毕了,但是是否需要借位还待考量
c.push_back((t+10)%10);//这里是强行插入 ,当然负数运算也是恰当的
if(t<0)t=1;//这里是借位
else t=0;
}
while(c.size()>1 &&c.back()==0){///由于上述计算的倒数900,其实结果是009,去掉前导零,,也是为了避免出现000,而将所有0删除
c.pop_back();
}
return c;
}
int main(){
string a,b;
cin>>a>>b;
vector[HTML_REMOVED]A,B;
for(int i=a.size()-1;i>=0;i–)A.push_back(a[i]-‘0’);
for(int i=b.size()-1;i>=0;i–)B.push_back(b[i]-‘0’);
//这里做情况是判断是否是大数减去小数,还是小数减去大数
if(cmp(A,B)){
auto c=sub(A,B);
for(int i=c.size()-1;i>=0;i--)printf("%d",c[i]);
}else{
printf("-");
auto c=sub(B,A);
for(int i=c.size()-1;i>=0;i--)printf("%d",c[i]);
}
}