计算2的1000000次方和实现C++2的n次方计算器(计算器高精度1000位)
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;}```
创作工场
免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。
点击这里>>使用🔥专业版,更聪明、更完整、更原创!