本地全对,评测 4 WA
代码:
#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;
}