【HDOJ】1047 Integer Inquiry

考虑可能出现级联进位,因此,输入数据累加后,需要重新调整一次后输出。

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 #define MAXNUM 150
 5 
 6 char sum[MAXNUM];
 7 char num[MAXNUM];
 8 
 9 void BigAdd(char num[]) {
10     int len = strlen(num);
11     int i, j;
12 
13     for (i=len-1,j=0; i>=0; --i,++j) {
14         sum[j] += (num[i]-'0');
15         sum[j+1] += sum[j] / 10;
16         sum[j] %= 10;
17     }
18 }
19 
20 int main() {
21     int case_n;
22     int i, j;
23 
24     scanf("%d", &case_n);
25 
26     while (case_n--) {
27         memset(sum, 0, sizeof(sum));
28         while (scanf("%s", num) != EOF) {
29             if (strlen(num)==1 && num[0]=='0')
30                 break;
31             BigAdd(num);
32         }
33         for (i=0; i<MAXNUM-1; ++i) {
34             sum[i+1] += sum[i] / 10;
35             sum[i] %= 10;
36         }
37         j = MAXNUM;
38         while (j)
39             if (sum[--j])
40                 break;
41         for (i=j; i>=0; --i)
42             printf("%d", sum[i]);
43         printf("\n");
44         if (case_n)
45             printf("\n");
46     }
47 
48     return 0;
49 }

 

posted on 2014-04-04 22:18  Bombe  阅读(128)  评论(0)    收藏  举报

导航