題目:
輸入兩個大整數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;
}
?