描述
不使用累计乘法的基础上,通过移位运算(<<)实现2的n次方的计算。
数据范围:0 \le n \le 31 \0≤n≤31
输入描述:
一行输入整数n(0 <= n < 31)。
输出描述:
输出对应的2的n次方的结果。
输入:
2 输出:4输入:
10输出:
1024
解一:
使用pow函数
double pow(double x, double y);
#include <bits/stdc++.h>
using namespace std;
int main() {
int a = 0;
while(scanf("%d", &a) != EOF) {
//循环读入之后调用pow函数计算结果,pow定义在cmath头文件
printf("%.lf\n", pow(2,a));
}
return 0;
}
注意:pow函数的参数应该为double型,返回值也为double型,若参数错误,会造成精度损失。
解二:
不使用累计乘法的基础上,通过移位运算(<<)实现2的n次方的计算。
移位操作符: >> <<
移位操作符:其实是作用于一个数的二进制数
#include <bits/stdc++.h>
using namespace std;
int main() {
int a = 0;
while(scanf("%d", &a) != EOF) {
//高效的实现可以使用左移,移动a位即为2的a次方
printf("%d\n", 1 << a);
}
return 0;
}