UVA-424
高精度运算(递归)
- One of the first users of BIT’s new supercomputer was Chip Diller. He extended his exploration of
powers of 3 to go from 0 to 333 and he explored taking various sums of those numbers.
“This supercomputer is great,” remarked Chip. “I only wish Timothy were here to see these results.”
(Chip moved to a new apartment, once one became available on the third floor of the Lemon Sky
apartments on Third Street.) - Input
The input will consist of at most 100 lines of text, each of which contains a single VeryLongInteger. Each VeryLongInteger will be 100 or fewer characters in length, and will only contain digits (no
VeryLongInteger will be negative).
The final input line will contain a single zero on a line by itself. - Output
Your program should output the sum of the VeryLongIntegers given in the input. - Sample Input
123456789012345678901234567890
123456789012345678901234567890
123456789012345678901234567890
0 - Sample Output
370370367037037036703703703670
#include<stdio.h>
#include<string.h>
#define N 500
int main(){
char s[N];
int a[N], sum[N];
int j;
memset(sum , 0, sizeof(sum));
while (scanf("%s", s) == 1){
if (strcmp(s, "0") == 0)
break;
int len = strlen(s);
memset(a, 0, sizeof(a));
for(int i = 0; i < len; i++)
a[i] = s[len - i - 1] - '0';
for(int i = 0; i < N; i++){
sum[i] += a[i];
if (sum[i] > 9){
sum[i + 1] += 1;
sum[i] %= 10;
}
}
}
for(int i = N - 1; i >= 0; i--)
if (sum[i] != 0){
j = i;
break;
}
for(int i = j; i >= 0; i--)
printf("%d", sum[i]);
printf("\n");
return 0;
}
代码来源:https://blog.csdn.net/u011345461/article/details/9884249