//shengsun
//高精度非负数减法 char读入
#include <stdio.h>
#include <string.h>
const int LEN=1000;
//高精度非负数减法
//参数(a,b: 字符串表示的减数; result: 字符串表示的结果)
//注: 传入result时最好将其初始化为0
void minus(char *a,char *b,char *result)
{
int temp[LEN]={0};
int i,j,borrow=0,len_t=0,len_c=0,flag;
int len_a=strlen(a);
int len_b=strlen(b);
if((len_a>len_b)||((len_a==len_b)&&strcmp(a,b)>=0))
{
flag=0; //作为结果符号的判断, flag=0表示两数相减为非负数
}
else
{
flag=1; //flag=1表示两数相减的结果为负数, 此时调整两减数, 使被减数位数不少于减数
char *t=a;
a=b;
b=t;
}
len_a=strlen(a);
len_b=strlen(b);
for(i=len_a-1,j=len_b-1;i>=0&&j>=0;i--,j--)
{
temp[len_t++]=(a[i]-b[j]-borrow+10)%10;
if(a[i]-b[j]-borrow<0)
{
borrow=1;
}
else
{
borrow=0;
}
}
while(i>=0) //处理被减数位数不比减数的少的情况
{
temp[len_t++]=(a[i]-'0'-borrow+10)%10;
if(a[i]-'0'-borrow<0)
{
borrow=1;
}
else
{
borrow=0;
}
i--;
}
len_t--;
if(flag==1) //处理结果的符号
{
result[len_c++]='-';
}
while(temp[len_t]==0&&len_t>0) //处理结果前面多余无效0的情况
{
len_t--;
}
while(len_t>=0) //结果转换为字符串
{
result[len_c++]=temp[len_t--]+'0';
}
}
int main()
{
char a[LEN-1],b[LEN-1],result[LEN];
while(scanf("%s%s",a,b)!=EOF)
{
memset(result,0,sizeof(result));
minus(a,b,result);
printf("%s/n",result);
}
}