Monday, January 13, 2025
Google search engine
HomeData Modelling & AIPrint numbers having first and last bits as the only set bits

Print numbers having first and last bits as the only set bits

Given a positive integer n. The problem is to print numbers in the range 1 to n having first and last bits as the only set bits.
Examples: 
 

Input : n = 10
Output : 1 3 5 9
(1)10 = (1)2.
(3)10 = (11)2.
(5)10 = (101)2.
(9)10 = (1001)2

 

Naive Approach: Print “1”. Now for i = 3 to n, check if (i-1) is a Perfect power of two or not. If true then print i.
 

C++




// C++ implementation to print numbers in the range 1 to n
// having first and last bits as the only set bits
#include <bits/stdc++.h>
  
using namespace std;
  
typedef unsigned long long int ull;
  
// function to check whether 'n'
// is a power of 2 or not
bool powerOfTwo(ull n)
{
    return (!(n & n-1));
}
  
// function to print numbers in the range 1 to n having
// first and last bits as the only set bits
void printNumWithFirstLastBitsSet(ull n)
{
    ull i = 1;
      
    // first number is '1'    
    cout << i << " ";
      
    // generating all the numbers
    for (i = 3; i <= n; i++)
        // if true, then print 'i'
        if (powerOfTwo(i-1))
            cout << i << " ";    
}
  
// Driver program to test above
int main()
{
    ull n = 10;
    printNumWithFirstLastBitsSet(n);
    return 0;


Java




// Naive approach 
// Java implementation to print
// numbers in the range 1 to n
// having first and last bits as
// the only set bits
import java.io.*;
  
class GFG {
      
    // function to check whether 'n'
    // is a power of 2 or not
    static Boolean powerOfTwo(long n)
    {
        return (!((n & n-1) != 0));
    }
      
    // function to print numbers in the 
    // range 1 to n having first and
    // last bits as the only set bits
    static void printNumWithFirstLastBitsSet(long n)
    {
        long i = 1;
          
        // first number is '1' 
        System.out.print( i + " ");
          
        // generating all the numbers
        for (i = 3; i <= n; i++)
          
            // if true, then print 'i'
            if (powerOfTwo(i - 1))
                System.out.print(i + " "); 
    }
        // Driver function
        public static void main (String[] args) {
        long n = 10l;
        printNumWithFirstLastBitsSet(n);
      
        }
}
  
//This code is contributed by Gitanjali.


Python3




# Python implementation to print 
# numbers in the range 1 to n
# having first and last bits 
# as the only set bits
import math
  
# function to check whether 'n'
# is a power of 2 or not
def powerOfTwo(n):
    re = (n & n - 1)
    return (re == 0)
  
# function to print numbers 
# in the range 1 to n having
# first and last bits as 
# the only set bits
def printNumWithFirstLastBitsSet(n):
    i = 1
      
    # first number is '1' 
    print ( i, end = " ")
      
    # generating all the numbers
    for i in range(3, n + 1):
          
        # if true, then print 'i'
        if (powerOfTwo(i - 1)):
            print ( i, end = " ")
      
      
# driver function
n = 10
printNumWithFirstLastBitsSet(n)
  
# This code is contributed by Gitanjali.


C#




// Naive approach 
// C# implementation to print
// numbers in the range 1 to n
// having first and last bits as
// the only set bits
using System;
  
class GFG {
      
    // function to check whether 'n'
    // is a power of 2 or not
    static Boolean powerOfTwo(long n)
    {
        return (!((n & n-1) != 0));
    }
      
    // function to print numbers in the 
    // range 1 to n having first and
    // last bits as the only set bits
    static void printNumWithFirstLastBitsSet(long n)
    {
        long i = 1;
          
        // first number is '1' 
        Console.Write( i + " ");
          
        // generating all the numbers
        for (i = 3; i <= n; i++)
          
            // if true, then print 'i'
            if (powerOfTwo(i - 1))
                Console.Write(i + " "); 
    }
      
    // Driver function
    public static void Main () 
    {
        long n = 10L;
        printNumWithFirstLastBitsSet(n);
          
    }
}
  
// This code is contributed by Vt_m.


PHP




<?php
// php implementation to print 
// numbers in the range 1 to n
// having first and last bits 
// as the only set bits
  
// function to check whether 'n'
// is a power of 2 or not
function powerOfTwo($n)
{
    return (!($n & $n - 1));
}
  
// function to print numbers in
// the range 1 to n having
// first and last bits as
// the only set bits
function printNumWithFirstLastBitsSet($n)
{
    $i = 1;
      
    // first number is '1' 
    echo $i." ";
      
    // generating all the numbers
    for ($i = 3; $i <= $n; $i++)
      
        // if true, then print 'i'
        if (powerOfTwo($i - 1))
            echo $i." "
}
  
    // Driver Code
    $n = 10;
    printNumWithFirstLastBitsSet($n);
  
// This Code is contributed by mits 
?>


Javascript




<script>
  
// Javascript implementation to print numbers in the range 1 to n
// having first and last bits as the only set bits
  
// function to check whether 'n'
// is a power of 2 or not
function powerOfTwo(n)
{
    return (!(n & n-1));
}
  
// function to print numbers in the range 1 to n having
// first and last bits as the only set bits
function printNumWithFirstLastBitsSet(n)
{
    let i = 1;
      
    // first number is '1'
    document.write(i + " ");
      
    // generating all the numbers
    for (i = 3; i <= n; i++)
        // if true, then print 'i'
        if (powerOfTwo(i-1))
            document.write(i + " ");
}
  
// Driver program to test above
  
    let n = 10;
    printNumWithFirstLastBitsSet(n);
  
  
//This code is contributed by Mayank Tyagi
</script>


Output: 
 

1 3 5 9

Time Complexity : O(n)

Auxiliary Space: O(1)

Efficient Approach: Print “1”. Now one by one generate perfect power of two (except ‘1’) with the help of bitwise left shift operation. Bitwise xor these numbers with 1 and if result is in the range print them else stop.
 

C++




// C++ implementation to print numbers in the range 1 to n
// having first and last bits as the only set bits
#include <bits/stdc++.h>
  
using namespace std;
  
typedef unsigned long long int ull;
  
// function to print numbers in the range 1 to n having
// first and last bits as the only set bits
void printNumWithFirstLastBitsSet(ull n)
{
    ull power_2 = 1, num;
      
    // first number is '1'    
    cout << power_2 << " ";
      
    while (1)    
    {
        // obtaining next perfect power of 2
        power_2 <<= 1;
          
        // toggling the last bit to convert 
        // it to as set bit
        num = power_2 ^ 1;
          
        // if out of range then break;
        if (n < num)
            break;
              
        // display    
        cout << num << " ";    
    }        
}
  
// Driver program to test above
int main()
{
    ull n = 10;
    printNumWithFirstLastBitsSet(n);
    return 0;
}


Java




// efficient approach Java implementation
// to print numbers in the range 1 to n
// having first and last bits as the only set bits
  
import java.io.*;
  
class GFG {
  
    // function to print numbers in 
    // the range 1 to n having first and 
    // last bits as the only set bits
    static void prNumWithFirstLastBitsSet(long n)
    {
        long power_2 = 1, num;
      
        // first number is '1' 
        System.out.print(power_2 + " ");
      
        while (true
        {
            // obtaining next perfect power of 2
            power_2 <<= 1;
              
            // toggling the last bit to  
            // convert it to as set bit
            num = power_2 ^ 1;
              
            // if out of range then break;
            if (n < num)
                break;
                  
            // display 
            System.out.print(num + " "); 
        }
      
}
  
    public static void main (String[] args) {
    long n = 10;
    prNumWithFirstLastBitsSet(n);
  
    }
}
// This code is contributed by Gitanjali.


Python3




# Python3 implementation to 
# pr numbers in the range 
# 1 to n having first and 
# last bits as the only set bits
  
  
# function to print numbers in the 
# range 1 to n having first and 
# last bits as the only set bits
def prNumWithFirstLastBitsSet(n):
      
    power_2 = 1
      
    # first number is '1' 
    print ( power_2, end = ' ')
      
    while (1):
        # obtaining next perfect
        # power of 2
        power_2 <<= 1
          
        # toggling the last bit to  
        # convert it to as set bit
        num = power_2 ^ 1
          
        # if out of range then break;
        if (n < num):
            break
              
        # display 
        print ( num, end = ' '
      
  
  
# Driver program 
n = 10;
prNumWithFirstLastBitsSet(n)
  
# This code is contributed by saloni1297


C#




// efficient approach C# implementation
// to print numbers in the range 1 to n
// having first and last bits as the only set bits
using System;
  
class GFG {
  
    // function to print numbers in 
    // the range 1 to n having first and 
    // last bits as the only set bits
    static void prNumWithFirstLastBitsSet(long n)
    {
        long power_2 = 1, num;
      
        // first number is '1' 
        Console.Write(power_2 + " ");
      
        while (true
        {
            // obtaining next perfect power of 2
            power_2 <<= 1;
              
            // toggling the last bit to 
            // convert it to as set bit
            num = power_2 ^ 1;
              
            // if out of range then break;
            if (n < num)
                break;
                  
            // display 
            Console.Write(num + " "); 
        }
      
    }
      
    // Driver code
    public static void Main () 
    {
        long n = 10;
        prNumWithFirstLastBitsSet(n);
  
    }
}
// This code is contributed by vt_m.


PHP




<?php
// php implementation to print 
// numbers in the range 1 to n
// having first and last bits 
// as the only set bits
  
// function to print numbers in 
// the range 1 to n having
// first and last bits as 
// the only set bits
function printNumWithFirstLastBitsSet($n)
{
    $power_2 = 1;
      
    // first number is '1' 
    echo $power_2." ";
      
    while (1) 
    {
          
        // obtaining next perfect
        // power of 2
        $power_2 <<= 1;
          
        // toggling the last
        // bit to convert 
        // it to as set bit
        $num = $power_2 ^ 1;
          
        // if out of range 
        // then break;
        if ($n < $num)
            break;
              
        // display 
        echo $num." "
    
}
  
    // Driver code
    $n = 10;
    printNumWithFirstLastBitsSet($n);
  
// This code is contributed by mits 
?>


Javascript




<script>
  
// Javascript implementation to print numbers in the range 1 to n 
// having first and last bits as the only set bits 
  
// function to print numbers in the range 1 to n having 
// first and last bits as the only set bits 
function printNumWithFirstLastBitsSet(n) 
    var power_2 = 1, num; 
      
    // first number is '1'     
    document.write(power_2 + " "); 
      
    while (true)     
    
        // obtaining next perfect power of 2 
        power_2 <<= 1; 
          
        // toggling the last bit to convert 
        // it to as set bit 
        num = power_2 ^ 1; 
          
        // if out of range then break; 
        if (n < num) 
            break
              
        // display     
        document.write(num + " ");     
    }         
  
// Driver program to test above 
var n = 10; 
printNumWithFirstLastBitsSet(n); 
      
</script>


Output: 

1 3 5 9

Time Complexity : O(logn)

Auxiliary Space: O(1) 

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

RELATED ARTICLES

Most Popular

Recent Comments