Related Articles

# 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 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;``}`

## Java

 `// Java program to check if a number``// is fibinnary number or not``class` `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 1s``def` `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 code``n ``=` `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 not``using` `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) )

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up