Fibbinary Numbers (No consecutive 1s in binary)

• Difficulty Level : Easy
• Last Updated : 21 May, 2021

Given N, check if the number is a Fibbinary number or not. Fibbinary numbers are integers whose binary representation includes 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 of doing 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

 // CPP program to check if a number// is fibinnary number or not#include using namespace std; // function to check if binary// representation of an integer// has consecutive 1sbool 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 functionint main(){    int n = 10;    if (checkFibinnary(n))        cout << "YES";    else        cout << "NO";    return 0;}

Java

 // Java program to check if a number// is fibinnary number or notclass GFG {         // function to check if binary    // representation of an integer    // has consecutive 1s    static boolean checkFibinnary(int n)    {         // stores the previous last bit        // initially as 0        int prev_last = 0;                 while (n != 0)        {                         // if current last bit and            // previous last bit is 1            if ((n & 1) != 0 && prev_last != 0)                             return false;                     // stores the last bit            prev_last = n & 1;                     // right shift the number            n >>= 1;        }             return true;    }         // Driver code to check above function    public static void main(String[] args)    {        int n = 10;         if (checkFibinnary(n) == true)            System.out.println("YES");        else            System.out.println("NO");    }} // This code is contributed by// Smitha Dinesh Semwal

Python3

 # Python 3 program to check if a# number is fibinnary number or# not # function to check if binary# representation of an integer# has consecutive 1sdef checkFibinnary(n):     # stores the previous last bit    # initially as 0    prev_last = 0         while (n):             # if current last bit and        # previous last bit is 1        if ((n & 1) and prev_last):            return False             # stores the last bit        prev_last = n & 1             # right shift the number        n >>= 1          return True # Driver coden = 10 if (checkFibinnary(n)):    print("YES")else:    print("NO") # This code is contributed by Smitha Dinesh Semwal

C#

 // C# program to check if a number// is fibinnary number or notusing System; class GFG {         // function to check if binary    // representation of an integer    // has consecutive 1s    static bool checkFibinnary(int n)    {         // stores the previous last bit        // initially as 0        int prev_last = 0;                 while (n != 0)        {                         // if current last bit and            // previous last bit is 1            if ((n & 1) != 0 && prev_last != 0)                             return false;                     // stores the last bit            prev_last = n & 1;                     // right shift the number            n >>= 1;        }             return true;    }         // Driver code to check above function    public static void Main()    {        int n = 10;         if (checkFibinnary(n) == true)            Console.WriteLine("YES");        else            Console.WriteLine("NO");    }} // This code is contributed by vt_m.

PHP

 >= 1;    }    return true;} // Driver code\$n = 10;if (checkFibinnary(\$n))    echo "YES";else    echo "NO"; // This code is contributed by mits?>

Javascript



Output:

YES

Time Complexity: O( log(n) )

My Personal Notes arrow_drop_up