判断一个数是不是2的整数次幂(两种方法)

方法一:

拿这个数来除以2,得到商和余数,再用商除以2,又得到商和余数,重复上面的操作,直到商为0,当商为0,余数也为0时,这个数就是2的整数次幂当商为0,余数不为0时,这个数就不是2的整数次幂。

程序如下:

#include <iostream>

using namespace std;


int fun(int n)

{

    if(n==1)

        return 1;

    else

    {

        do

        {

            if(n%2==0)

                n/=2;

            else

                return 0;

        }

        while(n!=1);

        return 1;

    }

    return 0;

}


int main()          //根号2的故事--判断一个数是不是2的整数次幂

{

    int n;

    while(cin>>n)

    {

        if(fun(n)==1)

            cout<<"ACM"<<endl;

        else

            cout<<"MCA"<<endl;

    }

    return 0;

}



方法二:

将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0; 因此问题可以转化为判断1后面是否跟了n个0就可以了。

如果将这个数减去1后会发现,仅有的那个1会变为0,而原来的那n个0会变为1;因此将原来的数与去减去1后的数字进行与运算后会发现为零。

最快速的方法:

  (number & number - 1) == 0

程序如下:

#include <iostream>

using namespace std;

int main()          //判断一个数是不是2的整数次幂

{

    int n;

    while(cin>>n)

    {

        if((n&(n-1))==0)    //此处注意运算符的优先级,“==”比“&”优先级高

            cout<<"ACM"<<endl;

        else

            cout<<"MCA"<<endl;

    }

    return 0;

}




  • 13
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 可以定义一个函数,输入参为x和n,输出为x的n次方。 具体实现可以使用循环,从1到n依累乘x,最后返回结果即可。如果n为负,则先将x取倒,再按照正的方式计算,最后再将结果取倒。 代码示例: def power(x, n): if n == : return 1 elif n < : x = 1 / x n = -n result = 1 for i in range(n): result *= x return result ### 回答2: 要实现一个能计算一个整数x的n次方函数,这个函数的核心思路是使用循环来迭代计算,并使用一个变量来记录运算结果。 首先,需要定义一个函数,让它接收两个参:x和n。这个函数的返回值应该是整数函数名可以是power或者myPow。 接下来,我们需要初始化一个常量变量result,用于存放运算结果。因为任何的0次方都是1,所以我们可以先将result设置为1,以便我们在后面的每一循环迭代中,都能将计算结果乘以x。 然后,我们需要一个循环来迭代计算。这个循环需要执行n,每一都将result乘以x,即: for (int i=0; i<n; i++){ result *= x; } 最后,我们将计算结果返回即可。完整的函数实现如下: int myPow(int x, int n) { int result = 1; for (int i=0; i<n; i++){ result *= x; } return result; } 需要注意的是,在实际应用中,由于计算n次方可能会超出int类型的取值范围,因此需要使用更大的据类型来存储计算结果,例如long long等。此外,为了程序的效率,也可以考虑使用递归来实现运算。 ### 回答3: 运算是指学中的一种运算,即将一个(底)自乘若干(指)得到的运算。在计算机科学中,运算是极其常见的运算,特别是在计算机算法和程序设计中,这种操作更是经常性出现。要实现整数运算,需要定义一个函数函数名:pow(x,n) 参:x为底,n为指 返回值:x的n次方 函数实现步骤: 首先判断n是否整数,如果不是整数,返回错误提示。 如果n为0,直接返回1,因为任何的0次方都是1。 如果n为正,则递归调用pow函数,直到n等于0返回1。 如果n为负,则先取绝对值,递归调用pow函数,计算出结果后再将结果取倒即可。 以下是Python语言的实现代码: ```python def pow(x,n): if not isinstance(n,int): return "Error: The exponent n must be an integer." if n==0: return 1 elif n>0: return x*pow(x,n-1) else: return 1/(pow(x,-n)) ``` 这样,我们就可以使用pow函数来计算任意整数运算了。例如,pow(2,3)返回8,pow(5,-2)返回0.04。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值