 GFG App
Open App Browser
Continue

# Fibbinary Numbers (No consecutive 1s in binary)

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 fibbinary number.
Some of the first few Fibbinary 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(logN), as we are using a loop to traverse logN times, we are decrementing by floor division of 2 (as right shifting a number by 1 is equivalent to floor division by 2) in each iteration therefore the loop iterates logN times.

Auxiliary Space: O(1), as we are not using any extra space.

My Personal Notes arrow_drop_up