题意:大数相加,但是AC率好低,注意进位和输出细节。
参考测试数据:
6
1 2
1 0
9999 1(找出错误的)
1 999999
5555 4445
112233445566778899 998877665544332211
代码:
#include <iostream> #include <iomanip> #include <string> #include <cstring> #include <cstdio> #include <queue> #include <stack> #include <algorithm> #include <cmath> #include <ctime> using namespace std; const int maxn = 1000+10; int a[maxn], b[maxn], s[maxn]; char s1[maxn], s2[maxn]; void Trans() { int i = 0, j = 0; for(i = strlen(s1)-1, j = 0; i >=0; i--) a[j++] = s1[i] - ‘0‘; for(i = strlen(s2)-1, j = 0; i >=0; i--) b[j++] = s2[i] - ‘0‘; } void Sum() { int i = 0; for (i = 0; i < strlen(s1) || i < strlen(s2); i++) { int temp = a[i] + b[i] + s[i]; s[i] = temp % 10; s[i+1] = temp / 10; } } int main() { #ifdef Local freopen("a.in", "r", stdin); #endif int t = 0, i = 0; cin >> t; getchar(); for (int kase = 1; kase <= t; kase++) { memset(a, 0, sizeof(a)); memset(b, 0, sizeof(b)); memset(s, 0, sizeof(s)); cout << "Case " << kase << ":" << endl; cin >> s1 >> s2; Trans(); Sum(); cout << s1; cout << " + "; cout << s2; cout << " = "; for (i = maxn-1; s[i] == 0 && i >= 0; i--); for (; i >=0; i--) cout << s[i] ; cout << endl; if (kase != t) cout << endl; } }
HDOJ - 1002 - A + B Problem II,布布扣,bubuko.com
HDOJ - 1002 - A + B Problem II
原文:http://blog.csdn.net/u013545222/article/details/20307857