傳送門:luogu
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <iostream>
#define N 40000006
using namespace std;
inline int wread(){
char c(getchar ());int wans(0),flag(1);
while (c<'0' || c>'9'){if (c=='-') flag=-1;c=getchar ();}
while (c>='0' && c<='9'){wans=wans*10+c-'0';c=getchar ();}
return wans*=flag;
}
char a[N],b[N];
int F,lena,lenb;
char pr[N];
void get_ans (char A[],char B[]){
for (int i(1);i<=lenb;++i){
int res = A[i] - B[i];
int lin (i+1);
while (res < 0) {
res +=10;
while ( A[lin]-1 < '0' ) A[lin] ='9',lin++;
A[lin] --;
}
pr[i] = res + '0' ;
}
for (int i(lenb+1);i<=lena;++i)
pr[i] = A[i];
reverse (pr+1,pr+lena+1);
int st(1);
while (pr[st] == '0') st++;
for (int i(st);i<=lena;++i){
printf("%c",pr[i]);
}
}
int main (){
// cout << (sizeof(a)+sizeof (b)+sizeof (pr))*1.0/1024.0/1024.0 << endl;
scanf ("%s",a+1);
scanf ("%s",b+1);
lena = strlen (a+1),lenb = (strlen (b+1));
if (lena > lenb) F=1;
else if (lenb > lena) F=2;
else {
for (int i(1);i<=lena;++i){
if (a[i] > b[i]) {F=1;break;}
else if (a[i] < b[i]) {F=2;break;}
}
}
reverse (a+1,a+lena+1);
reverse (b+1,b+lenb+1);
// cout << F << endl;
if (!F) {puts ("0");return 0;}
if (F==1){
get_ans(a,b);
}
else {
putchar ('-');
swap (lena,lenb);
get_ans (b,a);
}
return 0;
}