OJ地址:https://vjudge.net/problem/OpenJ_Bailian-2809
任意给定一个正整数N(N<=100),计算2的n次方的值。
输入一个正整数N。
输出2的N次方的值。
高精度计算
如果使用int或者long long 来做这道题的话,会超出范围。具体参考下图个数据类型的范围,或者C语言变量类型及其表示范围。
可以直接使用math头文件下的pow函数,但pow函数的返回值为double,所以需要在输出的时候限制保留整数,即小数点后是零位("%.0lf")。
int:
#include<cstdio> #include<cmath> 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 :
#include<cstdio> #include<cmath> 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:
#include<cstdio> #include<cmath> 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:
#include<cstdio> #include<cmath> int main(){ int n; scanf("%d",&n); double re = pow(2,n); printf("%.0lf\n",re); return 0; }