C++ 大数据相乘函数实现 - 高效处理超大数字
下面是一个使用 C++ 实现大数据相乘的函数:
#include <iostream>
#include <string>
#include <vector>
std::string multiply(const std::string& num1, const std::string& num2) {
int n1 = num1.size();
int n2 = num2.size();
std::vector<int> result(n1 + n2, 0);
for (int i = n1 - 1; i >= 0; i--) {
for (int j = n2 - 1; j >= 0; j--) {
int mul = (num1[i] - '0') * (num2[j] - '0');
int sum = result[i + j + 1] + mul;
result[i + j] += sum / 10;
result[i + j + 1] = sum % 10;
}
}
std::string res = '';
for (int num : result) {
if (!(res.size() == 0 && num == 0)) {
res += std::to_string(num);
}
}
return res.size() == 0 ? '0' : res;
}
int main() {
std::string num1 = '12345678';
std::string num2 = '123445566';
std::string result = multiply(num1, num2);
std::cout << num1 << ' * ' << num2 << ' = ' << result << std::endl;
return 0;
}
这个函数使用了一个 vector 来存储相乘的结果,然后通过两个嵌套的循环遍历两个输入字符串的每个数字,并将它们相乘。最后,将结果存储在 result vector 中。然后,将 result vector 转换为字符串,并返回结果。
在主函数中,我们使用了 12345678 和 123445566 两个输入数字进行测试,并打印出结果。
原文地址: https://www.cveoy.top/t/topic/o9cX 著作权归作者所有。请勿转载和采集!