超长整数的加减运算c++
时间: 2023-07-06 14:41:06 浏览: 200
当超长整数无法用内置的数据类型表示时,可以使用字符串来存储超长整数,并编写对应的加减运算函数。以下是C++的代码示例:
```cpp
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string add(string a, string b) {
string res;
int carry = 0;
int i = a.size() - 1, j = b.size() - 1;
while (i >= 0 || j >= 0 || carry) {
int sum = carry;
if (i >= 0) sum += a[i--] - '0';
if (j >= 0) sum += b[j--] - '0';
carry = sum / 10;
res += to_string(sum % 10);
}
reverse(res.begin(), res.end());
return res;
}
string subtract(string a, string b) {
string res;
int borrow = 0;
int i = a.size() - 1, j = b.size() - 1;
while (i >= 0 || j >= 0) {
int diff = borrow;
if (i >= 0) diff += a[i--] - '0';
if (j >= 0) diff -= b[j--] - '0';
borrow = diff < 0 ? -1 : 0;
res += to_string((diff + 10) % 10);
}
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;
cout << subtract(a, b) << endl;
return 0;
}
```
其中,`add`函数实现了超长整数的加法运算,`subtract`函数实现了超长整数的减法运算。这两个函数的思路类似,都是从低位往高位逐位相加/相减,并处理进位/借位。最后需要注意的是,减法运算可能会出现前导零,需要特殊处理。
阅读全文