【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 }
浙公网安备 33010602011771号