给定两个正整数(不含前导 0),计算它们的差,计算结果可能为负数。
输入格式
共两行,每行包含一个整数。
输出格式
共一行,包含所求的差。
数据范围
1≤整数长度≤10^5
输入样例:
32
11
输出样例:
21
#include<stdio.h>
#include<string.h>
#define N 100010
char a[N], b[N];
int A[N], B[N];
void jian(){
int l1 = strlen(a), l2 = strlen(b), len;
int flag = 0;
int i = 0;
if(l2 > l1 || (strcmp(a, b) < 0 && l1 == l2)){
flag = 1;
for(i = l2 - 1; i >= 0; i--)
A[l2 - i - 1] = b[i] - '0';
for(i = l1 - 1; i >= 0; i--)
B[l1 - i - 1] = a[i] - '0';
}
else{
for(i = l1 - 1; i >= 0; i--)
A[l1 - i - 1] = a[i] - '0';
for(i = l2 - 1; i >= 0; i--)
B[l2 - i - 1] = b[i] - '0';
}
if(l1 > l2)
len = l1;
else
len = l2;
for(i = 0; i < len; i++){
A[i] = A[i] - B[i];
if(A[i] < 0){
A[i + 1] -= 1;
A[i] += 10;
}
}
while(A[len - 1] == 0 && len > 1)
len--;
if(flag)
printf("-");
for(i = len - 1; i >= 0; i--)
printf("%d", A[i]);
}
int main(){
scanf("%s", a);
getchar();
scanf("%s", b);
getchar();
jian();
return 0;
}