Fibbinary Numbers (No consecutive 1s in binary)

2

Given N, check if the number is Fibbinary Number or not. Fibbinary numbers are integers whose binary representation contains no consecutive ones.

Examples:

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

The idea to do this is to right shift the number, till n!=0. For every binary representation of 1, check if the last bit found was 1 or not. Get the last bit of binary representation of the integer by doing a (n&1). If the last bit of the binary representation is 1 and the previous bit before doing a right shift was also one, we encounter consecutive 1’s. So we come to the conclusion that it is not a fibonnary number.

Some of the first few Fibonnary numbers are:

0, 2, 4, 8, 10, 16, 18, 20.......
// CPP program to check if a number 
// is fibinnary number or not
#include <iostream>
using namespace std;

// function to check if binary 
// representation of an integer 
// has consecutive 1s
bool checkFibinnary(int n) 
{
    // stores the previous last bit
    // initially as 0
    int prev_last = 0;
   
    while (n) 
    {
        // if current last bit and 
        // previous last bit is 1
        if ((n & 1) && prev_last)
            return false;
    
        // stores the last bit
        prev_last = n & 1;
    
        // right shift the number
        n >>= 1;
    }

    return true;
}

// Driver code to check above function
int main()
{
    int n = 10;
    if (checkFibinnary(n))
        cout << "YES";
    else
        cout << "NO";
    return 0;
}

Output:

YES

Time Complexity: O( log(n) )

Fibbinary Numbers (No consecutive 1s in binary) – O(1) Approach


I am weird, I am weirdo, u think u know me? Nah' ,u don't know me!

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

GATE CS Corner    Company Wise Coding Practice

Recommended Posts:



2 Average Difficulty : 2/5.0
Based on 1 vote(s)