首页 > 试题广场 >

2的n次方计算

[编程题]2的n次方计算
  • 热度指数:47473 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
不使用累计乘法的基础上,通过移位运算(<<)实现2的n次方的计算。

数据范围:

输入描述:
一行输入整数n(0 <= n < 31)。


输出描述:
输出对应的2的n次方的结果。
示例1

输入

2

输出

4
示例2

输入

10

输出

1024
#include <stdio.h>

int main() {
    int a;
    scanf("%d",&a);
    printf("%d",2<<(a-1));
    return 0;
}
发表于 2024-10-13 18:49:29 回复(0)
#include <stdio.h>

int main()
 {
    int n,m;
    scanf("%d",&n);
    for(int i=1;i<=n;++i)
    {
        m*=2;
    }
    printf("%d",m);
    return 0;
}
发表于 2024-07-27 14:22:03 回复(0)
#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;
}

发表于 2024-03-23 20:49:52 回复(0)
#include <stdio.h>

int main() 
{
    int a;

    scanf("%d", &a);

    a = 1 << a;

    printf("%d\n", a);
    
    return 0;
}

发表于 2024-03-02 20:08:25 回复(0)
#include <stdio.h>

int main() {
   
    int i = 0;
    scanf("%d",&i);
    printf("%d",1<<i);
    return 0;
}
发表于 2023-11-26 20:12:19 回复(0)
#include <stdio.h>

int main() {
    int n=0,i=0;
    scanf("%d",&n);
    if(n>=0&&n<=31)
    {
      printf("%d",1<<n);
    }
    return 0;
}



编辑于 2023-11-06 22:33:59 回复(2)
#include <stdio.h>

int main() {
    int n;
    scanf("%d",&n);
    printf("%d", 1<<n);
    return 0;
}
发表于 2023-09-19 18:21:35 回复(0)
#include <stdio.h>
#include<math.h>
int main()
{
    int n=0;
    scanf("%d",&n);
    int ret=pow(2,n);
    printf("%d\n",ret);
    return 0;
}
发表于 2023-08-30 12:29:06 回复(0)
#include <stdio.h>

int main() {
    int n=0;
    scanf("%d",&n);
    printf("%d",1<<n);
    return 0;
}

发表于 2023-03-07 10:23:35 回复(0)
#include <stdio.h>

int main() {

    int i = 0;
    scanf("%d", &i);
    int j = 2 << (i - 1);
    printf("%d", j);

    return 0;
}
发表于 2023-02-18 20:29:13 回复(0)
#include <stdio.h>
int main(void)
{
    int n;
    scanf("%d", &n); 
    printf("%d", 1 << n);
}

发表于 2023-01-14 17:29:05 回复(0)
#include <stdio.h>
int main()
{
    int n,m=2;
    scanf("%d",&n);
    for(int i=1;i<n;i++)
    {
        m*=2;
    }
    printf("%d",m);
    return 0;
}
发表于 2022-09-07 17:16:08 回复(0)
#include<stdio.h>

int main()
{
    long long a=1,b;
    scanf("%lld",&b);
    printf("%lld",a<<b);
    
    return 0;
}

我觉得我这个思路更简单
发表于 2022-09-07 08:57:59 回复(1)
#include <stdio.h>
int main()
{
    int data;
    scanf("%d",&data);
    printf("%d",2<<(data-1));
    return 0;
}

发表于 2022-08-11 16:52:51 回复(0)
#include <stdio.h>
int main()
{
    int n;
    scanf("%d" ,&n);
    printf("%d" ,1 << n);
    return 0;
}

发表于 2022-08-04 13:16:48 回复(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;
}

发表于 2022-08-04 10:51:41 回复(0)

考虑 n 可能等于 31,此时对于 int 类型会溢出,所以应该使用 long 类型(64位平台)

#include <stdio.h>

int main() {
    long a;
    scanf("%ld", &a);
    printf("%ld", 1<<a);
    return 0;
}
发表于 2022-07-10 18:25:52 回复(0)