/*
题目:求2^n
类型:高精度
作者:发烧的小龙虾
时间:2018.4.17
*/
#include <bits/stdc++.h>
using namespace std;
int weishu(int n)
{
return int(n*log10(2)+1);//求位数
}
int main()
{
int len,i,j,n,k;
static int a[1000000];
while(~scanf("%d",&n))
{
memset(a,0,sizeof(a));
a[0]=1;
len=weishu(n);
for(j=1;j<=n;j++)
{
k=0;
for(i=0;i<len;i++)
{
a[i]=a[i]*2+k;
k=a[i]/10;
a[i]=a[i]%10;
}
}
for(i=len-1;i>=0;i--)
if(a[i]!=0)
break;
for(;i>=0;i--)
printf("%d",a[i]);
printf("\n");
}
}

本文介绍了一种计算2的n次幂的高精度算法实现。通过动态调整数组大小来存储大整数,并利用循环逐步乘以2的方式进行幂运算。此方法适用于n值非常大的情况,能够有效处理超出常规整数类型所能表示的范围。

被折叠的 条评论
为什么被折叠?



