進位問題沒考慮好,WA一次。
9999 + 0001 = 0000。
/* ACM 10013 Super long sums * mythnc * 2011/11/23 14:17:30 * run time: 1.200 */ #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAXD 1000001 void bigsum(int *, int); void print(int *, int); int main(void) { int set, i, m; int *sum; sum = (int *)malloc(sizeof(int) * MAXD); scanf("%d", &set); for (i = 0; i < set; i++) { /* init */ memset(sum, 0, MAXD * sizeof(int)); scanf("%d", &m); bigsum(sum, m); print(sum, m - 1); if (i < set - 1) putchar('\n'); } free(sum); return 0; } /* bigsum: scan two number x, y, then do x + y */ void bigsum(int *sum, int m) { int i, x, y; for (i = m - 1; i > - 1; i--) { scanf("%d %d", &x, &y); sum[i] += x + y; } /* carry */ for (i = 0; i < m; i++) if (sum[i] > 9) { sum[i + 1] += sum[i] / 10; sum[i] %= 10; } } /* print: print out sum */ void print(int *sum, int m) { for (; m > -1; m--) printf("%d", sum[m]); putchar('\n'); }
沒有留言:
張貼留言