1119.BigInteger

题目描述:

    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.)

输入:

    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.

输出:

    Your program should output the sum of the VeryLongIntegers given in the input.

样例输入:
123456789012345678901234567890
123456789012345678901234567890
123456789012345678901234567890
0
样例输出:
370370367037037036703703703670
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
 
const int MAX_N = 100;
 
char s[MAX_N + 1];
int sum[MAX_N * 2];
 
int main()
{
    while (gets(s) && strcmp(s, "0") != 0) {
        int len = strlen(s), i, j;
        for (i = len - 1, j = MAX_N * 2 - 1; i >= 0; i--, j--) {
            int x = sum[j] + s[i] - '0';
            sum[j] = x % 10;
            sum[j - 1] += x / 10;
        }
        for ( ; sum[j] > 9; j--) {
            sum[j - 1] += sum[j] / 10;
            sum[j] %= 10;
        }
    }
    int i;
    for (i = 0; i < MAX_N * 2 - 1 && sum[i] == 0; i++);
    for ( ; i < MAX_N * 2; i++) printf("%d", sum[i]);
    putchar('\n');
    return 0;
}
 

 

posted @ 2018-10-01 17:11  bernieloveslife  阅读(133)  评论(0编辑  收藏  举报