记录一下手写的BigInt Class(之后再完善其他方法)
#include <bits/stdc++.h>
class bigInt {
public:
bigInt(std::string str)
: m_str(str)
{
}
std::string& getStr()
{
return m_str;
}
bigInt& add(bigInt& other)
{
std::string otherStr = other.getStr();
int l1 = m_str.length();
int l2 = otherStr.length();
if (l1 >= l2) {
for (int i = l1 - 1; i >= l1 - l2; i--)
m_str[i] += otherStr[i - l1 + l2] - 48;
} else {
for (int i = l2 - 1; i >= l2 - l1; i--)
otherStr[i] += m_str[i - l2 + l1] - 48;
m_str = otherStr;
}
for (auto iter = m_str.end() - 1; iter != m_str.begin(); iter--) {
if (*iter >= 58) {
*iter -= 10;
*(iter - 1) += 1;
}
}
if (m_str[0] >= 58) {
m_str[0] -= 10;
m_str.insert(0, 1, '1');
}
return *this;
}
private:
std::string m_str;
};
int main()
{
std::string str1, str2;
std::cin >> str1 >> str2;
bigInt i1(std::move(str1)), i2(std::move(str2));
std::cout << i1.add(i2).getStr() << std::endl;
}