题目如下:
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 9985 Accepted Submission(s): 2580
1 123456789012345678901234567890 123456789012345678901234567890 123456789012345678901234567890 0
370370367037037036703703703670
此题和Uvaoj424题目极其相似,只是输出格式不同,同样是大数相加问题,只是有多个大数在一起相加。
My Code:
#include <stdio.h> #include <string.h> #define MAXLEN 100 char inputArr[MAXLEN+10]; int resultArr[MAXLEN+10][MAXLEN+10]; int resultArr2[MAXLEN+10]; int main() { int n, i, j ,nLen, T, nflag; scanf("%d", &T); while(T--) { n=nLen=0; memset(resultArr, 0, sizeof(resultArr)); memset(resultArr2, 0, sizeof(resultArr2)); while(n<=100) { scanf("%s", inputArr); n++; nLen = strlen(inputArr); if(nLen == 1 && inputArr[0] == '0') { break; } i=j=0; for(j=nLen-1; j>=0; j--) { resultArr[n][i++] = inputArr[j] - '0'; } } for(j=1; j<n; j++) { for(i=0; i<MAXLEN; i++) { resultArr2[i] += resultArr[j][i]; if(resultArr2[i]>9) { resultArr2[i] -= 10; resultArr2[i+1]++; } } } nflag = 0; for(i=MAXLEN; i>=0; i--) { if(nflag) { printf("%d", resultArr2[i]); } else if(resultArr2[i]) { printf("%d", resultArr2[i]); nflag = 1; } } if(!nflag) { printf("0"); } if(T) { printf("\n\n"); } } printf("\n"); return 0; }
此题的输出格式极其恶心,做了写hduoj上的题,发现,hduoj题有个特点,就是对输出格式要求的很严,而且,就算同样的在其他oj上出现过的题目,在hduoj一般都是格式变得很麻烦,恶心!
贴张图表示我的遭遇: