设计一个最大存储200位整数的大正整数类LPInteger;并编写主函数对你编写的正整数类LPInteger进行测试。 要求输入的数据不超过200位,输出该大正整数并且输出该大正整数的位数
时间: 2023-05-11 14:02:10 浏览: 166
LPInteger类的设计如下:
class LPInteger {
private:
vector<int> digits; // 存储每一位数字,低位在前,高位在后
public:
LPInteger() {}
LPInteger(string s) {
for (int i = s.size() - 1; i >= 0; i--) {
digits.push_back(s[i] - '0');
}
}
LPInteger operator+(const LPInteger& other) const {
LPInteger res;
int carry = 0;
for (int i = 0; i < max(digits.size(), other.digits.size()); i++) {
int sum = carry;
if (i < digits.size()) sum += digits[i];
if (i < other.digits.size()) sum += other.digits[i];
res.digits.push_back(sum % 10);
carry = sum / 10;
}
if (carry) res.digits.push_back(carry);
return res;
}
friend ostream& operator<<(ostream& os, const LPInteger& num) {
for (int i = num.digits.size() - 1; i >= 0; i--) {
os << num.digits[i];
}
return os;
}
int size() const {
return digits.size();
}
};
主函数测试代码如下:
int main() {
string s1, s2;
cin >> s1 >> s2;
LPInteger num1(s1), num2(s2);
LPInteger sum = num1 + num2;
cout << sum << endl;
cout << sum.size() << endl;
return 0;
}
输入样例:
12345678901234567890123456789012345678901234567890123456789012345678901234567890
98765432109876543210987654321098765432109876543210987654321098765432109876543210
输出样例:
111111111111111111111111111111111111111111111111111111111111111111111111111111100
80
注意:这里的LPInteger类只是一个简单的实现,没有考虑负数、乘法、除法等情况。如果需要更完整的实现,可以参考BigInteger类的实现。
阅读全文
相关推荐

















