include<bits/stdc++.h>
using namespace std;
const int M=5000,N=20000,p=100000;//p是位数吧大概;好像并没有用到www;
char s[2][N];
int cheng[5]={1,10,100,1000,10000};//只能5;
int n[2][M],l[2],sum[M],iter,tmp,itera,flag,l_n[2];
bool compare(char*,char*);
int main(){
memset(sum,0,sizeof(sum));
cin>>s[0]>>s[1];
// cout<<compare(s[0],s[1])<<endl;
if(!compare(s[0],s[1])) flag=1;
// cout<<sum[M]<<endl;
for(int i=0;i<=1;i++){
// cin>>s[i];//把input放在前面,便于先判断大小再直接转int;
tmp=itera=iter=0;
l[i]=strlen(s[i]);
for(int j=0;j<l[i]/2;j++) //啊这一个,不能取等;
swap(s[i][j],s[i][l[i]-j-1]);
for(int j=0;j<l[i];j++){ //这不能取等(取等的现象:第一个n为负);
if(iter>=5){ // 压位的数字(出错的现象:莫名其妙少数字或添了0);
n[flag][itera++]=tmp;
tmp=0;
iter=0;
}
tmp+=(s[i][j]-48)*cheng[iter];//注意-48;
iter++;
}
// cout<<endl<<iter<<' '<<tmp<<endl;
if(tmp) {n[flag][itera]=tmp;l_n[flag]=itera;}
else l_n[flag]=--itera;
flag=(1-flag); //啊本来是用i来标n的但是呢嘿嘿嘿;
}
// for(int i=0;i<l[0];i++) cout<<s[0][i]; // reverse success;
/* for(int i=0;i<=1;i++){
int flag=0;
for(int j=l[i];j>=0;j--){ //不知道为什么从l[i]开始迭代;
if(flag)
printf("%05d",n[i][j]);
else{
printf("%d",n[i][j]);
flag=1;
}
}
cout<<endl;
}*/ //转int success;
// for(int i=M-1;i>=0;i--) cout<<sum[i]<<' ';
//要开始做减法了注意了啊各位看好b( ̄▽ ̄)d;
for(int i=0;i<=max(l_n[1],l_n[0]);i++){
sum[i]+=n[0][i]-n[1][i];
if(sum[i]<0) {sum[i+1]--;sum[i]+=p;}//退位;
}
// cout<<l_n[1]; //length correct;
// cout<<n[0][0]<<' '<<n[1][0];
int check=0;
for(int i=0;i<M;i++)
if(n[0][i]!=n[1][i]) {check=1;break;}
//以下是两个数字一样时的输出;
if(!check) {cout<<'0';return 0;}
//以下是两个数字不一样时的输出;
int begin=0,jb=0;
if(flag==1) cout<<'-';
for(int i=M-1;i>=0;i--){
if(begin==0 && sum[i]) {begin=1;}
if(begin==1 && jb==1) printf("%05d",sum[i]);
if(begin==1 && jb==0) {printf("%d",sum[i]);jb=1;}
}/**/
return 0;
}
bool compare(char *a,char *b){
// cout<<endl;
// cout<<"a=="<<a[0]<<endl<<"b=="<<b[0]<<endl;
if(strlen(a)>strlen(b)) return 1;
else if(strlen(a)<strlen(b)) return 0;
for(int i=strlen(a)-1;i>=0;i--)
if(a[i]!=b[i]){
if(a[i]>b[i]) return 1;
else return 0;
}
return 0;
}
//注释掉的都是检验用代码呢;
//苟屁!全tm是你的废话;
注意事项有:
1:const int 的p;
2:reverse时不能取到,会重复;
3:这个减法必须先判断谁大谁小,一点人生的经验;
4:本来用strcmp就行但是因为我的愚蠢(数组下标又搞错了(人体学自动加一屌不屌?))自己写了个compare;
千疮百孔啊;
洛谷的数据算是过了;
就这样;