【题目链接】
ybt 1037:计算2的幂
OpenJudge NOI 1.3 20:计算2的幂
【题目考点】
1. 不同整型数据的范围
类型 | 占用字节数 | 可表示数字范围 |
---|---|---|
char | 1 | -127~128 |
short | 2 | -32,768~32,767 |
unsigned short | 2 | 0~65,535 |
int | 4 | -2,147,483,648~2,147,483,647 |
unsigned int | 4 | 0~4,294,967,295 |
long long | 8 | -9,223,372,036,854,775,808~9,223,372,036,854,775,807 |
unsigned long long | 8 | 0~18,446,744,073,709,551,615 |
2. < cmath >库 乘方函数
- 乘方函数:
double pow(double a, double b);
求 a b a^b ab
3. 循环
【解题思路】
观察变量范围,n满足:
0
<
=
n
<
31
0 <= n < 31
0<=n<31
n最大值为30,幂最大值为
2
30
2^{30}
230,在int可以表示的范围内。
求
a
b
a^b
ab,可以通过循环乘b次a得到结果,也可以调用乘方函数pow(a,b)得到结果
【题解代码】
解法1:循环
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n, r = 1;
cin>>n;
for(int i = 0; i < n; ++i)
r *= 2;
cout<<r;
return 0;
}
解法2:调用pow函数
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
cout<<(int)pow(2, n);//pow返回浮点型,直接输出的话可能会以科学计数法输出。所以要转为整型后再输出。
return 0;
}