Minimum number of Binary strings to represent a Number
Last Updated :
16 Nov, 2022
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 substituting 0’s and 1’s greedily.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
void minBinary( int n)
{
int digit[10], len = 0;
while (n > 0) {
digit[len++] = n % 10;
n /= 10;
}
reverse(digit, digit + len);
int ans = 0;
for ( int i = 0; i < len; i++) {
ans = max(ans, digit[i]);
}
cout << "Minimum Number of binary strings needed: "
<< ans << endl;
for ( int i = 1; i <= ans; i++)
{
int num = 0;
for ( int j = 0; j < len; j++)
{
if (digit[j] > 0) {
num = num * 10 + 1;
digit[j]--;
}
else {
num *= 10;
}
}
cout << num << " " ;
}
}
int main()
{
int n = 564;
minBinary(n);
return 0;
}
|
Java
import java.util.*;
class GFG
{
static void minBinary( int n)
{
int [] digit = new int [ 10 ];
int len = 0 ;
while (n > 0 )
{
digit[len++] = n % 10 ;
n /= 10 ;
}
digit = reverse(digit, 0 , len - 1 );
int ans = 0 ;
for ( int i = 0 ; i < len; i++)
{
ans = Math.max(ans, digit[i]);
}
System.out.print( "Minimum Number of binary" +
" Strings needed: " + ans + "\n" );
for ( int i = 1 ; i <= ans; i++)
{
int num = 0 ;
for ( int j = 0 ; j < len; j++)
{
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)
{
int temp;
while (start <= end)
{
temp = str[start];
str[start] = str[end];
str[end] = temp;
start++;
end--;
}
return str;
}
public static void main(String[] args)
{
int n = 564 ;
minBinary(n);
}
}
|
Python3
def minBinary(n):
digit = [ 0 for i in range ( 3 )]
len = 0
while (n > 0 ):
digit[ len ] = n % 10
len + = 1
n / / = 10
digit = digit[:: - 1 ]
ans = 0
for i in range ( len ):
ans = max (ans, digit[i])
print ( "Minimum Number of binary strings needed:" , ans)
for i in range ( 1 , ans + 1 , 1 ):
num = 0
for j in range ( 0 , len , 1 ):
if (digit[j] > 0 ):
num = num * 10 + 1
digit[j] - = 1
else :
num * = 10
print (num, end = " " )
if __name__ = = '__main__' :
n = 564
minBinary(n)
|
C#
using System;
class GFG
{
static void minBinary( int n)
{
int [] digit = new int [10];
int len = 0;
while (n > 0)
{
digit[len++] = n % 10;
n /= 10;
}
digit = reverse(digit, 0, len - 1);
int ans = 0;
for ( int i = 0; i < len; i++)
{
ans = Math.Max(ans, digit[i]);
}
Console.Write( "Minimum Number of binary" +
" Strings needed: " + ans + "\n" );
for ( int i = 1; i <= ans; i++)
{
int num = 0;
for ( int j = 0; j < len; j++)
{
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)
{
int temp;
while (start <= end)
{
temp = str[start];
str[start] = str[end];
str[end] = temp;
start++;
end--;
}
return str;
}
public static void Main(String[] args)
{
int n = 564;
minBinary(n);
}
}
|
Javascript
<script>
function minBinary(n)
{
var digit = Array(10).fill(0);
var len = 0;
while (n > 0) {
digit[len++] = n % 10;
n = parseInt(n/10);
}
digit = reverse(digit, 0, len - 1);
var ans = 0;
for (i = 0; i < len; i++) {
ans = Math.max(ans, digit[i]);
}
document.write( "Minimum Number of binary"
+ " Strings needed: " + ans + "<br/>" );
for (i = 1; i <= ans; i++)
{
var num = 0;
for (j = 0; j < len; j++)
{
if (digit[j] > 0) {
num = num * 10 + 1;
digit[j]--;
} else {
num *= 10;
}
}
document.write(num + " " );
}
}
function reverse(str , start , end) {
var temp;
while (start <= end) {
temp = str[start];
str[start] = str[end];
str[end] = temp;
start++;
end--;
}
return str;
}
var n = 564;
minBinary(n);
</script>
|
Output:
Minimum No of binary strings needed: 6
111 111 111 111 110 10
Time Complexity: O(N)
Auxiliary Space: O(1)
Share your thoughts in the comments
Please Login to comment...