ʕ·͡ˑ·ཻ ʕ•̫͡• ʔ•̫͡•ཻʕ•̫͡•ʔ•͓͡•ʔ

12:计算2的N次方

描述

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

输入

输入一个正整数N。

输出

输出2的N次方的值。

样例输入

1
5

样例输出

1
32

思路:

这是高精度×单精度的题目,由于要考虑进位所以从低位到高位上的数字依次乘2,然后再逐位判断是否进位。

AC代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include<bits/stdc++.h>
using namespace std;

const int N = 50;

int a[N];

int main(){
int n;
cin>>n;
memset(a,0,sizeof(a));
//a[0]用来存储位数
a[0] = 1;
//a[1]为了方便下面计算a[1]位上的数
a[1] = 1;
for(int i=0;i<n;i++){
//由低位到高位依次计算每一位上的数字
for(int i=1;i<=a[0];i++){
a[i] *= 2;
}
//判断每一位是否需要进位
for(int i=1;i<=a[0];i++){
if(a[i]>=10){
a[i] %= 10;
a[i+1] += 1;
}
}
//最高位如果进位了,位数需要加1
if(a[a[0]+1]) ++a[0];
}
for(int i=a[0];i>=1;i--){
cout<<a[i];
}
cout<<endl;
return 0;
}