#include <iostream>
#include <vector>
using namespace std;
int main()
{
string a_str, b_str;
int a_len, b_len;
vector<int> a, b, c;
bool carry = false;
cin >> a_str >> b_str;
if (a_str[0] == '0')
a_str.erase(0, a_str.find_first_not_of('0'));
if (b_str[0] == '0')
b_str.erase(0, b_str.find_first_not_of('0'));
a_len = a_str.length();
b_len = b_str.length();
a.push_back(0);
b.push_back(0);
c.push_back(0);
for (int i = 1; i <= a_len; i++)
a.push_back(stoi(a_str.substr(a_len - i, 1)));
for (int i = 1; i <= b_len; i++)
b.push_back(stoi(b_str.substr(b_len - i, 1)));
for (int i = 1; i <= max(a_len, b_len) + 1; i++)
{
if (i <= min(a_len, b_len))
{
c.push_back(carry);
c[i] += a[i] + b[i];
if (c[i] >= 10)
{
carry = true;
c[i] %= 10;
}
else
carry = false;
}
if (i > min(a_len, b_len))
{
c.push_back(carry);
if (a_len > b_len)
c[i] += a[i];
if (a_len < b_len)
c[i] += b[i];
if (c[i] >= 10)
{
carry = true;
c[i] %= 10;
}
else
carry = false;
}
}
for (int i = 1; i < c.size(); i++)
{
if (c[c.size() - i] == 0)
c.erase(c.end() - i);
else
break;
}
for (int i = 1; i < c.size(); i++)
{
cout << c[c.size() - i];
}
return 0;
}
如题