美文网首页iOS Developer程序员
判断y是否为x的n次幂

判断y是否为x的n次幂

作者: iCode_ | 来源:发表于2017-03-09 17:37 被阅读115次

今天一个哥们去面试有道题问到我,题目是这样的:

写一个函数/方法,出入一个整数,判断是否为3的n次方,返回bool值。

其实挺简单的,先判断特殊情况“<=0”return NO; "==1" return yes;

其他情况我顺便做了下拓展,最后的方法如下

- (BOOL)inPutNumber:(NSInteger)inPutNum isPowerOf:(NSInteger)powerNum {
    if(inPutNum < 0 || inPutNum == 0)  return NO;
    if(inPutNum ==1)   return YES;
    if (powerNum == 2) return (inPutNum & (inPutNum - 1)) == 0;
    while(0 == inPutNum%powerNum){
        inPutNum = inPutNum/powerNum;
        if(inPutNum == 1) return YES;
    }
    return NO;
}

对2的判断,是用的&(按位与)

以4(100)    7(0111)    8(1000)为例
 
4 & 3 --> 100 & 011     = 0
7 & 6 --> 0111 & 0110  != 0
8 & 7 --> 1000 & 0111   = 0
 
即 如果 m & (m - 1) == 0,则m是2的n次方。

相关文章

  • 判断y是否为x的n次幂

    今天一个哥们去面试有道题问到我,题目是这样的: 写一个函数/方法,出入一个整数,判断是否为3的n次方,返回bool...

  • 分治法的常见问题

    计算x的n次幂 朴素算法:xxx...... 分治算法: n为偶数:x的n/2次幂*x的n/2次幂 n为奇数:x的...

  • 大整数的乘法

    将n位二进制整数X和Y都分为2段,每段的长为n/2位(为叙述简单,假设n是2的幂) 由此, 这样,X和Y的乘积为 ...

  • Python运算符

    算术运算符 **幂 - 返回x的y次幂a**b 为10的20次方, 输出结果 100000000000000000...

  • c函数pow()

    函数原型 double pow(double x, double y ) 函数返回 x的y的次幂,及x^y 示例 ...

  • 50. Pow(x,n) 次方运算

    题目 实现一个 pow(x,n) 计算 x 的 n 次幂。 解析 常规计算即可,如果 n 为负,对 x 多次扩展后...

  • python基本语法

    数值运算操作符x整除y:x//yx对y取余:x%yx的y次幂:x**Y/pow(x,y)++/--:无(pytho...

  • 神奇的“降幂”思维

    2019年2月13日自由书写 什么是“降幂”? X的n次方,其中X是底数,n就是幂次(故又称X的n次幂)。 降幂就...

  • 数据结构之图的基本操作

    一、判断图G是否存在边 或 (x, y) 1.1 如何判断无向图是否存在边 (C, D) ? 1.1...

  • 快速判断x的幂——x进制法 2020-07-27(未允禁转)

    快速判断x的幂——x进制法 1.快速判断一个数是否为2的幂 思路:如果一个数是2的幂,那么它的二进制数一定只含有一...

网友评论

    本文标题:判断y是否为x的n次幂

    本文链接:https://www.haomeiwen.com/subject/mmqggttx.html