题目:大整数加法。
分析:大整数,模拟。
说明:注意数组清零。
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
using namespace std;
int A[110],B[110];
char buf[110];
int input(int *a)
{
scanf("%s",buf);
if (!strcmp(buf, "0"))
return 0;
for (int i = 0 ; i < 110 ; ++ i)
a[i] = 0;
int len = strlen(buf);
for (int i = 0 ; i < len ; ++ i)
a[i] = buf[len-1-i] - '0';
return 1;
}
void add(int *a, int *b)
{
for (int i = 0 ; i < 110 ; ++ i)
a[i] += b[i];
for (int i = 0 ; i < 110 ; ++ i) {
a[i+1] += a[i]/10;
a[i] %= 10;
}
}
void output(int *a)
{
int end = 109;
while (!a[end] && end > 0) -- end;
while (end >= 0) printf("%d",a[end --]);
printf("\n");
}
int main()
{
if (!input(A))
output(A);
else {
while (input(B))
add(A, B);
output(A);
}
return 0;
}