#include<bits/stdc++.h>// 包含了很多有用的功能,就像一个装满工具的百宝箱usingnamespace std;// 使用标准命名空间,这样可以直接用里面的工具intmain(){
string a, b;// 定义两个字符串a和b,用来装输入的大整数
cin >> a >> b;// 从键盘输入两个大整数,分别存到a和b里bool f =false;// 定义一个布尔变量f,用来标记结果是不是负数,一开始假设不是负数// 如果a的长度小于b,或者a和b长度一样但a小于bif(a.length()< b.length()||(a.length()== b.length()&& a < b)){swap(a, b);// 交换a和b的值
f =true;// 标记结果是负数}// 如果a比b长,就在b前面补0while(a.length()> b.length()){
b ="0"+ b;}// 如果b比a长,就在a前面补0while(b.length()> a.length()){
a ="0"+ a;}
string res ="";// 定义一个字符串res,用来装计算结果,一开始是空的int c =0;// 定义一个变量c,用来记录借位,一开始没有借位,所以是0// 从后往前,一位一位地相减for(int i = a.length()-1; i >=0; i--){int x = a[i]-'0';// 把a中当前位的字符转成数字,存到x里int y = b[i]-'0';// 把b中当前位的字符转成数字,存到y里
x -= c;// 减去上一位的借位if(x < y){// 如果x比y小,说明不够减
x +=10;// 从前面一位借1当10,x就加上10
c =1;// 标记这一位借位了,下一位计算时要减去这个借位}else{
c =0;// 如果够减,就没有借位}
res =char(x - y +'0')+ res;// 把相减的结果转成字符,加到res的前面}// 如果res长度大于1,并且第一个字符是0,就去掉这个0while(res.length()>1&& res[0]=='0'){
res.erase(0,1);}// 如果之前标记结果是负数if(f){
res ="-"+ res;// 在结果前面加上负号}
cout << res << endl;// 把结果输出到屏幕上return0;}