题目:
输入两个大整数a
b
,计算a - b
的结果,其中数据保证0 < b < a < 10^500
。
输入描述:
一行,两个大整数a
b
,中间用空格隔开。
输出描述:
一行一个整数,表示a-b
的结果
#include <bits/stdc++.h>
using namespace std;
int a[1000010], b[1000010], c[1000010], lena, lenb, lenc, i;
char n[100010], n1[100010], n2[100010];
int main(){
scanf("%s", n1);
scanf("%s", n2);
if (strlen(n1) < strlen(n2) || (strlen(n1) == strlen(n2) && strcmp(n1, n2) < 0)) {
strcpy(n, n1);
strcpy(n1, n2);
strcpy(n2, n);
cout << "-";
}
lena = strlen(n1); lenb = strlen(n2);
for(i = 0; i <= lena - 1; i++) a[lena - i] = int(n1[i] - '0');
for(i = 0; i <= lenb - 1; i++) b[lenb - i] = int(n2[i] - '0');
i = 1;
while (i <= lena || i <= lenb) {
if (a[i] < b[i]) {
a[i] += 10;
a[i+1]--;
}
c[i] = a[i] - b[i];
i++;
}
lenc = i;
while ((c[lenc] == 0) && (lenc > 1)) lenc--;
for (i = lenc; i >= 1; i--) cout << c[i];
cout << endl;
return 0;
}