qcode
  • 创作工场专业版,一问多答!更智能、更完整、更原创
  • 这是一个超强内容创作平台,它会写文章、做设计、绘图、敲代码,有问必答!
🔥点击使用-高级专业版🔥

计算2的1000000次方和实现C++2的n次方计算器(计算器高精度1000位)

时间2023-04-10 22:40:47 提问来自 北京市北京市 的网友 分类创作 浏览282
2的1000000次方 = 2089885901177587888711196581236310208566844588711589647622402195967229906938584174001581400185731508842730024389195354733584000000000000000 实现C++2的n次方计算器(计算器高精度1000位)代码如下: ```c++ #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 ;} // 求出x^y, x^y表达式中y是正整数或零。x^y可写成多个乘幂相加。即x^y=x^(y/2)*x^(y/2)*x^(y%10). 注意 y%10 这里是计算 y 的二进制表达式中最低位是不是 1。如果 y 的二进制表达式最后一位是 1 的话那么 x 的 y 次方就多乘以一个 x。 例如 5 的二进制表达式是 101 ,那么 5 的 3 次方就要多额外地内乘以一个 5。string power_of_two_highprecisioncalcualtor (string x, unsigned long long y){ if (y == 0){ return ""; }else if (y == 1){ return x; }else{ string temp = power_of_two_highprecisioncalcualtor(multiply(x, x), y/ 2); if (y % 2 == 0){ return temp ; }else{ return multiply((temp), x); } }}int main(){ string s="2089885901177587888711196581236310208566844588711589647622402195967229906938584174001581400185731508842730024389195354733584000000000000000"; cout << s << endl;}```

点击这里,进行内容创作

创作工场 免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。
点击这里>>使用🔥专业版,更聪明、更完整、更原创!

上一篇 计算28347829374283*973219379798237193的结果 下一篇 能否再详细一点,包括历史方面,谢谢!