2283 - 高精度入门第3题:高精度乘单精度《计算2的N次方》

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

任意给定一个正整数N(0 <= N≤1000),计算2的N次方的值。

Input

有多组测试数据。

输入只有一个正整数N。

Output

每组数据输出一行,为一个整数,表示2的N次方的值。

Sample Input

5
10
65 

Sample Output

32
1024
36893488147419103232

Hint

longint 和 int64 都存不下的,不信?试一试n=65,看看结果是多少。所以要用数组模拟每一位,当然要模拟进位。这道题就像我们小学乘法一样,每个位都用一个独立的单元a[i]表示。建议a[1]表示个位,a[2]表示十位,不然进位就麻烦了。

Source

题目输入

题目输出

输入/输出样例

输入格式


                        

输出格式


                        

C++解答

#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
    int a[400],n,i,j,len;
    while(scanf("%d",&n)!=EOF)
    {
        memset(a,0,sizeof(a));
        a[1]=1;len=1;
        for(i=1;i<=n;i++)
        {
         for(j=1;j<=len;j++)a[j]*=2;
         for(j=1;j<=len;j++)if(a[j]>9){a[j+1]+=(a[j]/10); a[j]%=10; }
         if(a[len+1]!=0)len++;
        }
        for(i=len;i>=1;i--)printf("%d",a[i]);
        printf("\n");
    }
    return 0;
}