GZHU18级寒假训练:Cancer's Trial-第九题

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

猜你喜欢

转载自blog.csdn.net/weixin_43316754/article/details/86687597