#include <cstdio>
#include <cstring>
int main()
{
char a[202]={0}, b[202]={0};
scanf("%s%s", a, b);
int alen = strlen(a), blen = strlen(b), t = 0, i;
int a1[202]={0}, b1[202]={0};
for (i = 0; i < alen; i++) a1[i] = a[alen-1-i]-'0';//颠倒并且减去负号0
for (i = 0; i < blen; i++) b1[i] = b[blen-1-i]-'0';//颠倒并且减去负号0
alen = (alen > blen) ? alen : blen; //把大值给 alen
for (i = 0; i <= alen; i++)//模拟竖式 原理和加法一样,需要不过考虑的不是进位,而是借位。
t = a1[i]-b1[i];
t<0?(t+=10,a1[i+1]--):t;
a1[i] = t;
while (!a1[i] && i) i--;//有的位置可能没有赋值,也就是为 0,去除他们的干扰 把i的范围减小
for(; i >= 0; i--) printf("%d", a1[i]);//反着打印出来
return 0;
}
原理和加法一样,需要不过考虑的不是进位,而是借位。