2283 - 高精度入门第3题:高精度乘单精度《计算2的N次方》
时间限制 : 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; }