key
- 检查减数和被减数的大小,大的放前,小的放后
- 确定结果是正数,还是负数,即符号位
- 从低位开始减
- 如果a[i]<b[i],则向高位借1当10,a[i+1]–;a[i]+=10
#include <iostream>
#include<cstring>
using namespace std;
void whoisbig(int a[],int b[],int* flag){if(a[0]<b[0]){*flag=1;} if(a[0]==b[0]){int i=a[0];while(i>0){if(a[i]<b[i]){*flag=1;break;} --i; }}}
void a_i(char* a,int * b){b[0]=strlen(a);for(int i=b[0];i>0;--i){b[b[0]-i+1]=a[i-1]-'0';}
}
int main(){char s1[10090],s2[10090];int* p,*q;int a[10090],b[10090],c[10090];int flag=0;scanf("%s",s1);scanf("%s",s2);a_i(s1,a);a_i(s2,b);p=a;q=b;whoisbig(p,q,&flag);if(flag==1){p=b;q=a;}c[0]=max(a[0],b[0]);for(int i=1;i<=c[0];i++){c[i]=p[i]-q[i];if(p[i]<q[i]){c[i]+=10;p[i+1]--;}}while(c[c[0]]==0 && c[0]>1) c[0]-=1;if(flag==1)cout<<"-";for(int i= c[0];i>0;--i)printf("%d",c[i]);return 0;
}