# Minimum number of Binary strings to represent a Number

• Last Updated : 17 Nov, 2021

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 greadily.

Below is the implementation of the above approach:

## C++

 `// C++ program to find the minimum number of``// binary strings to represent a number``#include ``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;``}`

## Java

 `// 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`

## Python3

 `# 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`

## C#

 `// 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`

## Javascript

 ``

Output:

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

Time Complexity: O(N)

Auxiliary Space: O(1)

My Personal Notes arrow_drop_up