题目描述:求两个不超过200位的非负整数的和。
输入:有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。
输出:一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
输入样例:
22222222222222222222 33333333333333333333
输出样例:
55555555555555555555
程序(自己练习,欢迎大家纠错,互相学习提升):
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int a[201], b[201], c[202];
string str1, str2;
void strToInt(string s, int a[])
{
for (int i = 1; i <= s.size(); i++)
{
a[i] = s[s.size() - i] - '0';
}
}
int main()
{
cin >> str1 >> str2;
strToInt(str1, a);
strToInt(str2, b);
int la = str1.size();
int lb = str2.size();
int lc = max(la, lb) + 1;
for (int i = 1; i < lc; i++)
{
c[i] = c[i] + (a[i] + b[i]) % 10;
c[i + 1] = (a[i] + b[i]) / 10;
}
for (int i = lc; i >=2; i--)
{
if (c[i] == 0)
{
lc = lc - 1;
}
}
for (int i = lc; i >=1; i--)
{
cout << c[i];
}
return 0;
}