题目:
输入两个 大整数ab,计算a – b的结果,其中数据保证0 < b < a < 10^500。
输入描述:
一行,两个大整数ab,中间用空格隔开。
输出描述:
一行一个整数,表示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;
}
评论0