求助
查看原帖
求助
628691
EthanSong楼主2023/12/14 22:53

记录

本地全对,评测 44 WAWA

代码:

#include <bits/stdc++.h>
using namespace std;
struct hugeint
{
    vector<int> num;
    hugeint()
    {
        num.clear();
    }
    void read()
    {
        num.clear();
        char c;
        while (scanf("%c", &c) == 1)
        {
            if (c >= '0' && c <= '9') num.emplace_back(c - '0');
            else break;
        }
        reverse(num.begin(), num.end());
    }
    void print()
    {
        int i = num.size() - 1;
        while (num[i] == 0 && i > 0) i--;
        while (i >= 0) cout << num[i], i--;
    }
    void operator= (const hugeint &r)
    {
        num.clear();
        for (size_t i = 0; i < r.num.size(); i++)
        {
            num.emplace_back(r.num[i]);
        }
    }
    hugeint operator+ (const hugeint &r) const
    {
        hugeint res;
        int L1 = num.size(), L2 = r.num.size(), i = 0, carry = 0;
        while (i < L1 && i < L2)
        {
            int x = num[i] + r.num[i] + carry;
            carry = x / 10;
            x %= 10;
            res.num.emplace_back(x);
            i++;
        }
        while (i < L1)
        {
            int x = num[i] + carry;
            carry = x / 10;
            x %= 10;
            res.num.emplace_back(x);
            i++;
        }
        while (i < L2)
        {
            int x = r.num[i] + carry;
            carry = x / 10;
            x %= 10;
            res.num.emplace_back(x);
            i++;
        }
        if (carry != 0) res.num.emplace_back(carry);
        return res;
    }
};
hugeint a, b;
int main()
{
    a.read();
    b.read();
    a = a + b;
    a.print();
    return 0;
}

2023/12/14 22:53
加载中...