80分求助
查看原帖
80分求助
728193
TianKeMing楼主2023/4/17 21:21
#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;
}

如题

2023/4/17 21:21
加载中...