算法思想:高精度—>用数组存储2的N次方的每一位;每次将数组的每一位乘以2,选取中间变量存储进位值,并扩充位数。
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int main()
{
int a[10000],size = 1, n;//size表示多少位
cin >> n;
a[0] = 1;
for(int i=0;i<n;i++){
int temp = 0;//中间变量
for(int j=0;j<size;j++){
temp += a[j]*2;
a[j] = temp%10;
temp = temp/10;//判断是否需要进位
}
if(temp)
a[size++] = temp;//判断是否需要扩充位数
}
for(int i=size-1;i>=0;i--)
printf("%d",a[i]);//倒序输出
}
自己练习使用,未找到原版引用,如有问题欢迎大家指出。