Generate all binary numbers in range [L, R] with same length - GeeksforGeeks

23 Dec, 2021
Given two positive integer numbers L and R. The task is to convert all the numbers from L to R to binary number. The length of all binary numbers should be same.
Examples:
Input: L = 2, R = 4Output:010011100Explanation: The binary representation of the numbers: 2 = 10, 3 = 11 and 4 = 100.For the numbers to have same length one preceding 0 is added to the binary representation of both 3 and 4.
Input: L = 2, R = 8Output:0010001101000101011001111000
Approach: Follow the approach mentioned below to solve the problem.
To determine the length of resultant binary numbers, take log of R+1 to the base 2.
Then traverse from L to R and convert every number to binary of determined length.
Store each number and print it at the end.
Below is the implementation of the above approach
C++
Java
Python3
C#
Javascript
// C++ code to implement the approach#include <bits/stdc++.h>using namespace std; // Function to convert a number to binaryvector<int> convertToBinary(int num,                            int length){    vector<int> bits(length, 0);    if (num == 0) {        return bits;    }     int i = length - 1;    while (num != 0) {        bits[i--] = (num % 2);         // Integer division        // gives quotient        num = num / 2;    }    return bits;} // Function to convert all numbers// in range [L, R] to binary of// same lengthvector<vector<int> > getAllBinary(int l,                                  int r){     // Length of the binary numbers    int n = (int) ceil(log(r+1) / log (2));     vector<vector<int> > binary_nos;     for (int i = l; i <= r; i++) {        vector<int> bits =            convertToBinary(i, n);        binary_nos.push_back(bits);    }     return binary_nos;} // Driver codeint main(){    int L = 2, R = 8;    vector<vector<int> > binary_nos =        getAllBinary(L, R);    for (int i = 0; i < binary_nos.size();        i++) {        for (int j = 0; j <            binary_nos[i].size(); j++)            cout << binary_nos[i][j];        cout << endl;    }    return 0;}
// Java code to implement the approachimport java.util.*;public class GFG{   // Function to convert a number to binary  static ArrayList<Integer> convertToBinary(int num,                                            int length)  {    ArrayList<Integer> bits= new ArrayList<Integer>();    for(int i = 0; i < length; i++) {      bits.add(0);    }    if (num == 0) {      return bits;    }     int i = length - 1;    while (num != 0) {      bits.set(i, (num % 2));      i = i - 1;       // Integer division      // gives quotient      num = num / 2;    }     return bits;  }   // Function to convert all numbers  // in range [L, R] to binary of  // same length  static ArrayList<ArrayList<Integer> > getAllBinary(int l,                                                     int r)  {     // Length of the binary numbers    double x = Math.log(r+1);    double y = Math.log (2);    int n = (int) Math.ceil(x / y);     ArrayList<ArrayList<Integer> > binary_nos =      new ArrayList<ArrayList<Integer> >();     for (int i = l; i <= r; i++) {      ArrayList<Integer> bits =        convertToBinary(i, n);      binary_nos.add(bits);    }     return binary_nos;  }   // Driver code  public static void main(String args[])  {    int L = 2, R = 8;    ArrayList<ArrayList<Integer> > binary_nos =      getAllBinary(L, R);    for (int i = 0; i < binary_nos.size(); i++) {      for (int j = 0; j < binary_nos.get(i).size(); j++) {        System.out.print(binary_nos.get(i).get(j));      }      System.out.println();    }  }} // This code is contributed by Samim Hossain Mondal.
# Python 3 code to implement the approachimport math # Function to convert a number to binarydef convertToBinary(num, length):     bits = [0]*(length)    if (num == 0):        return bits     i = length - 1    while (num != 0):        bits[i] = (num % 2)        i -= 1         # Integer division        # gives quotient        num = num // 2     return bits # Function to convert all numbers# in range [L, R] to binary of# same lengthdef getAllBinary(l, r):     # Length of the binary numbers    n = int(math.ceil(math.log(r+1)/ math.log(2)))     binary_nos = []     for i in range(l, r + 1):        bits = convertToBinary(i, n)        binary_nos.append(bits)     return binary_nos # Driver codeif __name__ == "__main__":     L = 2    R = 8    binary_nos = getAllBinary(L, R)    for i in range(len(binary_nos)):        for j in range(len(binary_nos[i])):            print(binary_nos[i][j], end="")        print()         # This code is contributed by ukasp.
// C# code to implement the approachusing System;using System.Collections.Generic;public class GFG{   // Function to convert a number to binary  static List<int> convertToBinary(int num, int length)  {    List<int> bits = new List<int>();    int i;    for (i = 0; i < length; i++)    {      bits.Add(0);    }    if (num == 0)    {      return bits;    }     i = length - 1;    while (num != 0)    {      bits[i] = (num % 2);      i = i - 1;       // Integer division      // gives quotient      num = num / 2;    }     return bits;  }   // Function to convert all numbers  // in range [L, R] to binary of  // same length  static List<List<int>> getAllBinary(int l, int r)  {     // Length of the binary numbers    double x = Math.Log(r + 1);    double y = Math.Log(2);    int n = (int)Math.Ceiling(x / y);     List<List<int>> binary_nos = new List<List<int>>();     for (int i = l; i <= r; i++)    {      List<int> bits = convertToBinary(i, n);      binary_nos.Add(bits);    }     return binary_nos;  }   // Driver code  public static void Main()  {    int L = 2, R = 8;    List<List<int>> binary_nos = getAllBinary(L, R);    for (int i = 0; i < binary_nos.Count; i++)    {      for (int j = 0; j < binary_nos[i].Count; j++)      {        Console.Write(binary_nos[i][j]);      }      Console.WriteLine("");    }  }} // This code is contributed by Saurabh Jaiswal
<script>    // JavaScript code to implement the approach     // Function to convert a number to binary    const convertToBinary = (num, length) => {        let bits = new Array(length).fill(0);        if (num == 0) {            return bits;        }         let i = length - 1;        while (num != 0) {            bits[i--] = (num % 2);             // Integer division            // gives quotient            num = parseInt(num / 2);        }        return bits;    }     // Function to convert all numbers    // in range [L, R] to binary of    // same length    const getAllBinary = (l, r) => {         // Length of the binary numbers        let n = Math.ceil(Math.log(r + 1) / Math.log(2));         let binary_nos = [];         for (let i = l; i <= r; i++) {            let bits = convertToBinary(i, n);            binary_nos.push(bits);        }         return binary_nos;    }     // Driver code     let L = 2, R = 8;    let binary_nos = getAllBinary(L, R);    for (let i = 0; i < binary_nos.length;        i++) {        for (let j = 0; j <            binary_nos[i].length; j++)            document.write(binary_nos[i][j]);        document.write("<br/>");    }         // This code is contributed by rakeshsahni </script>
  
0010
0011
0100
0101
0110
0111
1000
 
Time Complexity: O(N * logR) where N = (R – L + 1)Auxiliary Space: O(N * logR)
 
rakeshsahni
ukasp
samim2000
gfgking
binary-representation
Bit Magic
Mathematical
Mathematical
Bit Magic
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
How to turn off a particular bit in a number?
Set, Clear and Toggle a given bit of a number in C
Reverse actual bits of the given number
Convert decimal fraction to binary number
Count inversions in an array | Set 3 (Using BIT)
Program for Fibonacci numbers
Write a program to print all permutations of a given string
C++ Data Types
Set in C++ Standard Template Library (STL)
Modulo Operator (%) in C/C++ with Examples