高精*低精c++代码
时间: 2024-06-17 15:07:24 浏览: 87
高精度和低精度的概念通常用于处理超过计算机数据类型范围的大数值,例如几千位或几万位的数字。在C++中,可以通过自定义数据类型和重载运算符来实现高精度和低精度的计算。下面是一个简单的例子:
```c++
#include <iostream>
#include <cstring>
using namespace std;
const int MAXN = 1005;
struct BigInteger {
int len, s[MAXN];
BigInteger() {
memset(s, 0, sizeof(s));
len = 1;
}
BigInteger(int num) {
*this = BigInteger();
while (num) {
s[len++] = num % 10;
num /= 10;
}
len--;
}
BigInteger operator = (const char* str) {
memset(s, 0, sizeof(s));
len = strlen(str);
for (int i = 0; i < len; i++) s[i] = str[len - i - 1] - '0';
return *this;
}
BigInteger operator + (const BigInteger& b) const {
BigInteger c;
c.len = 0;
for (int i = 0, g = 0; g || i < max(len, b.len); i++) {
int x = g;
if (i < len) x += s[i];
if (i < b.len) x += b.s[i];
c.s[c.len++] = x % 10;
g = x / 10;
}
return c;
}
void print() {
for (int i = len - 1; i >= 0; i--) cout << s[i];
}
};
int main() {
BigInteger a, b;
cin >> a = "123456789";
cin >> b = "987654321";
(a + b).print();
return 0;
}
```
上面的代码实现了两个大数相加,其中 `BigInteger` 结构体是自定义的高精度数据类型,可以处理非常大的整数。这里将字符串转换为 `BigInteger` 类型时采用了反向存储的方式,这样可以更方便地进行高精度计算。
阅读全文