2016-07-14
UVA - 424 Integer Inquiry
题目大意:大整数相加
解题思路:读入 char 类型字符串,倒序储存于 int 类型的数组中,相加大于 10 进位,可能比原来大一位,倒序输出。
注意:int型字符串的位数要注意。
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
char str1[1000000];
char str2[1000000];
char str3[1000000];
int x[100000];
int y[100000];
int z[100000];
int main() {
int n = 1;
int m = 0;
cin >> str1;
memset( x , 0 , sizeof(x) );
int len1 = strlen(str1);
for (int i = len1-1; i >= 0; i--) {
x[n-1] = str1[i] - '0';
n++;
}
n--;
while ( cin >> str2 && str2[0] != '0' ) {
int len2 = strlen(str2);
if ( m != 0 ) n = m;
for (int i = len2-1, j = 0; i >= 0; i--, j++) y[j] = str2[i] - '0';
for (int i = 0; i < max(n,len2); i++) {
x[i] = x[i] + y[i];
if ( x[i] > 9 ) {
x[i] = x[i] - 10;
x[i+1] += 1;
}
m = i + 1;
}
}
if ( x[m] != 0 ) m++;
for (int j = m-1; j >= 0; j--) cout << x[j];
cout << endl;
return 0;
}