OJ地址:https://vjudge.net/problem/OpenJ_Bailian-2809
任意给定一个正整数N(N<=100),计算2的n次方的值。
Input
输入一个正整数N。
Output
输出2的N次方的值。
Sample Input
5
Sample Output
32
Hint
高精度计算
思路:
如果使用int或者long long 来做这道题的话,会超出范围。具体参考下图个数据类型的范围,或者C语言变量类型及其表示范围。
可以直接使用math头文件下的pow函数,但pow函数的返回值为double,所以需要在输出的时候限制保留整数,即小数点后是零位("%.0lf")。
程序代码:
错误:
int:
int main(){
int n;
scanf("%d",&n);
int re=1;
for(int i=0;i<n;i++){
re*=2;
}
printf("%d\n",re);
return 0;
}
long long :
int main(){
int n;
scanf("%d",&n);
long long re=1;
for(int i=0;i<n;i++){
re*=2;
}
printf("%lld\n",re);
return 0;
}
正确:
double:
int main(){
int n;
scanf("%d",&n);
double re=1;
for(int i=0;i<n;i++){
re*=2;
}
printf("%.0lf\n",re);
return 0;
}
使用pow:
int main(){
int n;
scanf("%d",&n);
double re = pow(2,n);
printf("%.0lf\n",re);
return 0;
}
运行结果: