【题目描述】
求两个不超过200位的非负整数的和。
【输入】
有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。
【输出】
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
【输入样例】
22222222222222222222
33333333333333333333【输出样例】
55555555555555555555
【题解代码】
#include<bits/stdc++.h>
using namespace std;const int N = 210;
int a[N], b[N], c[N];int main()
{string s1, s2; cin >> s1 >> s2;int aindex = 1, bindex = 1;int la = 1, lb = 1, lc = 1;for (int i = s1.size(); i >= 0; i--){a[aindex++] = s1[i] - '0';if (s1[i] == '0') la = aindex - 1;}for (int i = s2.size(); i >= 0; i--){b[bindex] = s2[i] - '0';if (s2[i] == '0') lb = bindex - 1;}lc = max(aindex, bindex) + 1;for (int i = 1; i <= lc; i++){c[i] += a[i] + b[i];c[i + 1] = c[i] / 10;c[i] %= 10;}while (!c[lc] && lc > 1) lc--;for (int i = lc; i >= 1; i--)cout << c[i];return 0;
}