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

## 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

`<?php` `// PHP program to check if a number ` `// is fibinnary number or not` `// function to check if binary ` `// representation of an integer ` `// has consecutive 1s` `function` `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) && ` `$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` `))` ` ` `echo` `"YES"` `;` `else` ` ` `echo` `"NO"` `;` `// This code is contributed by mits ` `?>` |

## Javascript

`<script>` ` ` `// javascript program to check if a number ` ` ` `// is fibinnary number or not ` ` ` `// function to check if binary` ` ` `// representation of an integer` ` ` `// has consecutive 1s` ` ` `function` `checkFibinnary(n) {` ` ` `// stores the previous last bit` ` ` `// initially as 0` ` ` `var` `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` ` ` ` ` `var` `n = 10;` ` ` `if` `(checkFibinnary(n) == ` `true` `)` ` ` `document.write(` `"YES"` `);` ` ` `else` ` ` `document.write(` `"NO"` `);` `// This code contributed by Rajput-Ji` `</script>` |

**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.

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