Minimum number of Binary strings to represent a Number

Given a number N. The task is to find the minimum number of binary strings required to represent the given number as the sum of the binary strings.

Examples:

Input : 131
Output : Minimum Number of binary strings needed: 3
111 10 10



Input : 564
Output :Minimum Number of binary strings needed: 6
111 111 111 111 110 10

Approach:

  • Store all digits of the given number in the array.
  • Find the maximum digit in the array. This maximum number(maxi) indicates the number of binary strings required to represent the given number.
  • Now, find maxi numbers by substuting 0’s and 1’s greadily.

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to find the minimum number of 
// binary strings to represent a number
#include <bits/stdc++.h>
using namespace std;
  
// Function to find the minimum number of 
// binary strings to represent a number
void minBinary(int n)
{
    int digit[10], len = 0;
      
    while (n > 0) {
        digit[len++] = n % 10;
        n /= 10;
    }
      
    // Storing digits in correct order
    reverse(digit, digit + len); 
  
    int ans = 0;
      
    // Find the maximum digit in the array
    for (int i = 0; i < len; i++) {
        ans = max(ans, digit[i]);
    }
  
    cout << "Minimum Number of binary strings needed: "
         << ans << endl;
  
    // Traverse for all the binary strings
    for (int i = 1; i <= ans; i++) 
    {
        int num = 0;
        for (int j = 0; j < len; j++)
        {
            // If digit at jth position is greater 
            // than 0 then substitute 1
            if (digit[j] > 0) {
  
                num = num * 10 + 1;
                digit[j]--;
            }
            else {
                num *= 10;
            }
        }
        cout << num << " ";
    }
  
}
  
// Driver code
int main()
{
    int n = 564;
      
    minBinary(n);
      
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to find the minimum number of 
// binary Strings to represent a number
import java.util.*;
  
class GFG 
{
  
    // Function to find the minimum number of
    // binary Strings to represent a number
    static void minBinary(int n)
    {
        int[] digit = new int[10];
        int len = 0;
  
        while (n > 0
        {
            digit[len++] = n % 10;
            n /= 10;
        }
  
        // Storing digits in correct order
        digit = reverse(digit, 0, len - 1);
  
        int ans = 0;
  
        // Find the maximum digit in the array
        for (int i = 0; i < len; i++) 
        {
            ans = Math.max(ans, digit[i]);
        }
  
        System.out.print("Minimum Number of binary"
                   " Strings needed: " + ans + "\n");
  
        // Traverse for all the binary Strings
        for (int i = 1; i <= ans; i++)
        {
            int num = 0;
            for (int j = 0; j < len; j++) 
            {
                // If digit at jth position is greater
                // than 0 then substitute 1
                if (digit[j] > 0
                {
                    num = num * 10 + 1;
                    digit[j]--;
                }
                else
                {
                    num *= 10;
                }
            }
            System.out.print(num + " ");
        }
    }
  
    static int[] reverse(int str[], 
                         int start, int end)
    {
  
        // Temporary variable to store character
        int temp;
        while (start <= end)
        {
            // Swapping the first and last character
            temp = str[start];
            str[start] = str[end];
            str[end] = temp;
            start++;
            end--;
        }
        return str;
    }
  
    // Driver code
    public static void main(String[] args)
    {
        int n = 564;
  
        minBinary(n);
    }
}
  
// This code is contributed by 29AjayKumar

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program to find the minimum number of 
# binary strings to represent a number
  
# Function to find the minimum number of 
# binary strings to represent a number
def minBinary(n):
    digit = [0 for i in range(3)]
    len = 0
      
    while (n > 0):
        digit[len] = n % 10
        len += 1
        n //= 10
      
    # Storing digits in correct order
    digit = digit[::-1
  
    ans = 0
      
    # Find the maximum digit in the array
    for i in range(len):
        ans = max(ans, digit[i])
  
    print("Minimum Number of binary strings needed:", ans)
      
    # Traverse for all the binary strings
    for i in range(1, ans + 1, 1):
        num = 0
        for j in range(0, len, 1):
              
            # If digit at jth position is greater 
            # than 0 then substitute 1
            if (digit[j] > 0):
                num = num * 10 + 1
                digit[j] -= 1
            else:
                num *= 10
        print(num, end = " ")
  
# Driver code
if __name__ == '__main__':
    n = 564
      
    minBinary(n)
      
# This code is contributed by
# Surendra_Gangwar

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to find the minimum number of 
// binary Strings to represent a number
using System;
  
class GFG 
{
  
    // Function to find the minimum number of
    // binary Strings to represent a number
    static void minBinary(int n)
    {
        int[] digit = new int[10];
        int len = 0;
  
        while (n > 0) 
        {
            digit[len++] = n % 10;
            n /= 10;
        }
  
        // Storing digits in correct order
        digit = reverse(digit, 0, len - 1);
  
        int ans = 0;
  
        // Find the maximum digit in the array
        for (int i = 0; i < len; i++) 
        {
            ans = Math.Max(ans, digit[i]);
        }
  
        Console.Write("Minimum Number of binary"
                " Strings needed: " + ans + "\n");
  
        // Traverse for all the binary Strings
        for (int i = 1; i <= ans; i++)
        {
            int num = 0;
            for (int j = 0; j < len; j++) 
            {
                // If digit at jth position is greater
                // than 0 then substitute 1
                if (digit[j] > 0) 
                {
                    num = num * 10 + 1;
                    digit[j]--;
                }
                else
                {
                    num *= 10;
                }
            }
            Console.Write(num + " ");
        }
    }
  
    static int[] reverse(int []str, 
                         int start, int end)
    {
  
        // Temporary variable to store character
        int temp;
        while (start <= end)
        {
            // Swapping the first and 
            // last character
            temp = str[start];
            str[start] = str[end];
            str[end] = temp;
            start++;
            end--;
        }
        return str;
    }
  
    // Driver code
    public static void Main(String[] args)
    {
        int n = 564;
  
        minBinary(n);
    }
}
  
// This code is contributed by 29AjayKumar

chevron_right



Output:

Minimum No of binary strings needed: 6
111 111 111 111 110 10 


My Personal Notes arrow_drop_up

Competitive Programmer, Full Stack Developer, Technical Content Writer, Machine Learner

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.