📜  二进制数(二进制中无连续的1)– O(1)方法

📅  最后修改于: 2021-04-28 13:49:22             🧑  作者: Mango

给定正整数n 。问题是检查该数字是否为“ Fibbinary Number”。二进制数是整数,其二进制表示形式不包含连续的整数。
例子 :

Input : 10
Output : Yes
Explanation: 1010 is the binary representation 
             of 10 which does not contains any 
             consecutive 1's.

Input : 11
Output : No
Explanation: 1011 is the binary representation 
             of 11, which contains consecutive 
             1's.

方法:如果(n&(n >> 1))== 0,则’n’是一个不是其他的数字。

C++
// C++ implementation to check whether a number
// is fibbinary or not
#include 
using namespace std;
 
// function to check whether a number
// is fibbinary or not
bool isFibbinaryNum(unsigned int n) {
 
  // if the number does not contain adjacent ones
  // then (n & (n >> 1)) operation results to 0
  if ((n & (n >> 1)) == 0)
    return true;
 
  // not a fibbinary number
  return false;
}
 
// Driver program to test above
int main() {
  unsigned int n = 10;
  if (isFibbinaryNum(n))
    cout << "Yes";
  else
    cout << "No";
  return 0;
}


Java
// Java implementation to check whether
// a number is fibbinary or not
class GFG {
     
    // function to check whether a number
    // is fibbinary or not
    static boolean isFibbinaryNum(int n) {
     
        // if the number does not contain
        // adjacent ones then (n & (n >> 1))
        // operation results to 0
        if ((n & (n >> 1)) == 0)
            return true;
         
        // not a fibbinary number
        return false;
    }
     
    // Driver program to test above
    public static void main(String[] args) {
 
        int n = 10;
 
        if (isFibbinaryNum(n) == true)
            System.out.println("Yes");
        else
            System.out.println("No");
    }
}
 
// This code is contributed by
// Smitha Dinesh Semwal


Python3
# Python3 program to check if a number
# is fibinnary number or not
 
# function to check whether a number
# is fibbinary or not
def isFibbinaryNum( n):
     
    # if the number does not contain adjacent
    # ones then (n & (n >> 1)) operation
    # results to 0
    if ((n & (n >> 1)) == 0):
        return 1
         
    # Not a fibbinary number
    return 0
 
# Driver code
n = 10
 
if (isFibbinaryNum(n)):
    print("Yes")
else:
    print("No")
     
# This code is contributed by sunnysingh


C#
// C# implementation to check whether
// a number is fibbinary or not
using System;
 
class GFG {
     
    // function to check whether a number
    // is fibbinary or not
    static bool isFibbinaryNum(int n) {
     
        // if the number does not contain
        // adjacent ones then (n & (n >> 1))
        // operation results to 0
        if ((n & (n >> 1)) == 0)
            return true;
         
        // not a fibbinary number
        return false;
    }
     
    // Driver program to test above
    public static void Main() {
 
        int n = 10;
 
        if (isFibbinaryNum(n) == true)
            Console.WriteLine("Yes");
        else
            Console.WriteLine("No");
    }
}
 
// This code is contributed by vt_m.


PHP
> 1))
    // operation results to 0
    if (($n & ($n >> 1)) == 0)
        return true;
     
    // not a fibbinary number
    return false;
}
 
// Driver code
$n = 10;
if (isFibbinaryNum($n))
    echo "Yes";
else
    echo "No";
 
// This code is contributed by mits
?>


Javascript


输出 :

Yes

时间复杂度:O(1)。