Given a number n, our task is to find all 1 to n bit numbers with no consecutive 1s in their binary representation.
Examples:
Input: N = 4 Output: 1 2 4 5 8 9 10 These are numbers with 1 to 4 bits and no consecutive ones in binary representation. Input: n = 3 Output: 1 2 4 5
Approach:
- There will be 2n numbers with number of bits from 1 to n.
- Iterate through all 2n numbers. For every number check if it contains consecutive set bits or not. To check, we do bitwise and of current number i and left-shifted i. If the bitwise and contains a non-zero bit (or its value is non-zero), then the given number contains consecutive set bits.
Below is the implementation of the above approach:
C++
// Print all numbers upto n bits // with no consecutive set bits. #include<iostream> using namespace std;
void printNonConsecutive( int n)
{ // Let us first compute
// 2 raised to power n.
int p = (1 << n);
// loop 1 to n to check
// all the numbers
for ( int i = 1; i < p; i++)
// A number i doesn't contain
// consecutive set bits if
// bitwise and of i and left
// shifted i don't contain a
// commons set bit.
if ((i & (i << 1)) == 0)
cout << i << " " ;
} // Driver code int main()
{ int n = 3;
printNonConsecutive(n);
return 0;
} |
Java
// Java Code to Print all numbers upto // n bits with no consecutive set bits. import java.util.*;
class GFG
{ static void printNonConsecutive( int n)
{
// Let us first compute
// 2 raised to power n.
int p = ( 1 << n);
// loop 1 to n to check
// all the numbers
for ( int i = 1 ; i < p; i++)
// A number i doesn't contain
// consecutive set bits if
// bitwise and of i and left
// shifted i doesn't contain a
// commons set bit.
if ((i & (i << 1 )) == 0 )
System.out.print(i + " " );
}
// Driver code public static void main(String[] args)
{
int n = 3 ;
printNonConsecutive(n);
}
} // This code is contributed by Mr. Somesh Awasthi |
Python3
# Python3 program to print all numbers upto # n bits with no consecutive set bits. def printNonConsecutive(n):
# Let us first compute
# 2 raised to power n.
p = ( 1 << n)
# loop 1 to n to check
# all the numbers
for i in range ( 1 , p):
# A number i doesn't contain
# consecutive set bits if
# bitwise and of i and left
# shifted i don't contain a
# common set bit.
if ((i & (i << 1 )) = = 0 ):
print (i, end = " " )
# Driver code n = 3
printNonConsecutive(n) # This code is contributed by Anant Agarwal. |
C#
// C# Code to Print all numbers upto // n bits with no consecutive set bits. using System;
class GFG
{ static void printNonConsecutive( int n)
{
// Let us first compute
// 2 raised to power n.
int p = (1 << n);
// loop 1 to n to check
// all the numbers
for ( int i = 1; i < p; i++)
// A number i doesn't contain
// consecutive set bits if
// bitwise and of i and left
// shifted i don't contain a
// commons set bit.
if ((i & (i << 1)) == 0)
Console.Write(i + " " );
}
// Driver code public static void Main()
{
int n = 3;
printNonConsecutive(n);
}
} // This code is contributed by nitin mittal. |
PHP
<?php // Print all numbers upto n bits // with no consecutive set bits. function printNonConsecutive( $n )
{ // Let us first compute
// 2 raised to power n.
$p = (1 << $n );
// loop 1 to n to check
// all the numbers
for ( $i = 1; $i < $p ; $i ++)
// A number i doesn't contain
// consecutive set bits if
// bitwise and of i and left
// shifted i don't contain a
// commons set bit.
if (( $i & ( $i << 1)) == 0)
echo $i . " " ;
} // Driver code
$n = 3;
printNonConsecutive( $n );
// This code is contributed by Sam007 ?> |
Javascript
<script> // Javascript Code to Print all numbers upto // n bits with no consecutive set bits. function printNonConsecutive(n)
{
// Let us first compute
// 2 raised to power n.
let p = (1 << n);
// loop 1 to n to check
// all the numbers
for (let i = 1; i < p; i++)
// A number i doesn't contain
// consecutive set bits if
// bitwise and of i and left
// shifted i don't contain a
// commons set bit.
if ((i & (i << 1)) == 0)
document.write(i + " " );
}
// driver program let n = 3;
printNonConsecutive(n);
</script> |
Output
1 2 4 5
Time Complexity: O(2N)
Auxiliary Space: O(1)
Recommended Articles