calculator.cpp 题目描述: 请计算两个数的和与差 输入格式: 两行,每行一个整数 输出格式: 两行,第一行为两个数的和,第二行为两个数的差 样例输入: 7 5 样例输出: 12 2 数据说明: 输入的两个整数的绝对值都不大于 10^100
时间: 2023-11-28 19:47:59 浏览: 133
以下是 `calculator.cpp` 的代码实现,可以计算两个大整数的和与差:
```c++
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string add(string a, string b) {
int carry = 0;
string res;
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
for (int i = 0; i < max(a.size(), b.size()); i++) {
int x = i < a.size() ? a[i] - '0' : 0;
int y = i < b.size() ? b[i] - '0' : 0;
int sum = x + y + carry;
res.push_back(sum % 10 + '0');
carry = sum / 10;
}
if (carry) res.push_back(carry + '0');
reverse(res.begin(), res.end());
return res;
}
string sub(string a, string b) {
int borrow = 0;
string res;
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
for (int i = 0; i < max(a.size(), b.size()); i++) {
int x = i < a.size() ? a[i] - '0' : 0;
int y = i < b.size() ? b[i] - '0' : 0;
int diff = x - y - borrow;
if (diff < 0) {
diff += 10;
borrow = 1;
} else {
borrow = 0;
}
res.push_back(diff + '0');
}
while (res.size() > 1 && res.back() == '0') res.pop_back();
reverse(res.begin(), res.end());
return res;
}
int main() {
string a, b;
cin >> a >> b;
cout << add(a, b) << endl << sub(a, b) << endl;
return 0;
}
```
该程序使用了两个函数 `add` 和 `sub` 分别计算两个大整数的和与差。其中,`add` 函数实现了从低位到高位的加法,`sub` 函数实现了从低位到高位的减法,这两个函数都可以处理任意长度的大整数。在主函数中,先读入两个大整数,然后分别调用 `add` 和 `sub` 函数计算它们的和与差,最后输出结果。
阅读全文