c++ 高精度加法
时间: 2023-06-29 14:14:17 浏览: 78
高精度加法是指对于两个较大的数进行加法运算时,使用字符串或数组等数据结构来存储这些数,并通过模拟竖式计算的方式进行相加,避免了数据溢出的问题。以下是一个简单的 C++ 高精度加法实现:
```c++
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string add(string a, string b) {
int lena = a.length(), lenb = b.length();
if (lena < lenb) {
swap(a, b);
swap(lena, lenb);
}
int carry = 0;
string res = "";
for (int i = 0; i < lena; i++) {
int x = a[lena - i - 1] - '0', y = i < lenb ? b[lenb - i - 1] - '0' : 0;
int sum = x + y + carry;
res += to_string(sum % 10);
carry = sum / 10;
}
if (carry) res += "1";
reverse(res.begin(), res.end());
return res;
}
int main() {
string a, b;
cin >> a >> b;
cout << add(a, b) << endl;
return 0;
}
```
这里使用了 `string` 类型来存储高精度数,避免了溢出问题。在 `add()` 函数中,我们首先将两个字符串的长度进行比较,使得第一个字符串 `a` 的长度不小于第二个字符串 `b` 的长度。然后从低位到高位遍历两个字符串,每次计算当前位的和,并将其加入结果字符串 `res` 中。最后需要判断是否有进位,如果有则将其加入结果字符串的最高位。最后反转结果字符串并返回即可。
希望对您有所帮助!