原始问题:
计算2的1000000次方和实现C++2的n次方计算器(计算器高精度1000位)
2的1000000次方 = 2089885901177587888711196581236310208566844588711589647622402195967229906938584174001581400185731508842730024389195354733584000000000000000
实现C++2的n次方计算器(计算器高精度1000位)代码如下:
#include<iostream>
using namespace std;
// 返回大数乘以小数的结果
string multiply(string num1, string num2) {
int n1 = num1.size(); // 获取num1的位数
int n2 = num2.size(); // 获取num2的位数
if (n1 == 0 || n2 == 0) return "0"; // 如果有一个乘数为0则返回0
// 存储乘法计算后的结果字符串
string result(n1 + n2, '0');
int carry = 0; // 进位标志变量
for (int i=n1-1; i>=0; i--) { // 遍历num1中所有元素,从末尾开始遍历
carry = 0; // 每一步都将carry重新初始化为0
for (int j=n2-1; j>=0; j--) { // 遍历num2中所有元素,从末尾开始遍历 // 各位相乘并加上进位carry得到当前result字符对应的值 result[i+j+1] += ((num1[i]-'0')*(num2[j]-'0') + carry) % 10 ; carry = ((num1[i]-'0')*(num2[j]-'0') + carry) / 10 ; } result[i] += carry ; } while (result.size() > 1 && result[0] == '0') result.erase(result.begin()); return result ;}
Prev:计算28347829374283*973219379798237193的结果