c++高精度乘法计算15的64次方,并输出
时间: 2024-10-21 08:07:35 浏览: 21
在 C++ 中进行高精度乘法并计算 15 的 64 次方通常需要利用字符串或者数组来存储大整数,因为 C++ 标准库并没有内置的数据类型可以直接支持任意大小的整数。下面是一个简单的示例,使用数组来模拟大整数的乘法:
```cpp
#include <iostream>
#include <vector>
// 定义函数用于两个大数相乘
std::vector<int> multiply(const std::vector<int>& a, const std::vector<int>& b) {
int carry = 0;
std::vector<int> result(a.size() + b.size(), 0);
for (int i = a.size() - 1; i >= 0; --i) {
for (int j = b.size() - 1; j >= 0; --j) {
int prod = a[i] * b[j] + carry;
result[i + j + 1] += prod % 10;
carry = prod / 10;
}
}
// 如果还有进位,将它加到第一个位置
if (carry > 0)
result[0] += carry;
// 裁剪超过的数字
while (result.back() == 0 && result.size() > 1)
result.pop_back();
return result;
}
// 主函数计算 15 的 64 次方
std::vector<int> power(int base, int exponent) {
if (exponent == 0)
return {1};
std::vector<int> half_result = power(base, exponent / 2);
std::vector<int> result = multiply(half_result, half_result);
// 如果 exponent 是奇数,再乘以 base
if (exponent % 2 == 1)
result = multiply(result, {base});
return result;
}
int main() {
int base = 15;
int exponent = 64;
std::vector<int> result = power(base, exponent);
// 输出结果前几位(假设结果很大)
for (int i : result) {
std::cout << i;
}
std::cout << "\n";
阅读全文