不使用累计乘法的基础上,通过移位运算(<<)实现2的n次方的计算。
数据范围:
#include <stdio.h> int main() { int n = 0; scanf("%d", &n); while (n >= 0 && n <=31) { int sum = 0; sum = 1 << n; printf("%d", sum); break; } return 0; }
#include <stdio.h> int main() { int n,squ; scanf("%d",&n); while(0 <= n < 31) { squ = 2 << (n-1); //squ = 1 << n; printf("%d",squ); break; } return 0; }
考虑 n 可能等于 31,此时对于 int 类型会溢出,所以应该使用 long 类型(64位平台)
#include <stdio.h> int main() { long a; scanf("%ld", &a); printf("%ld", 1<<a); return 0; }