Given a numeric string** S** representing a positive decimal integer, the task is to find the minimum number of positive **Deci-Binary** numbers required to obtain the sum** S**.

Deci-Binary Numbers:Decimal numbers consisting of only0s and1s as its digits.

**Examples:**

Input:S = “31”Output:3Explanation:S can be represented as the sum of minimum of 3 Deci-Binary numbers {10, 10, 11}.

Input:S = “82734”Output:8Explanation:S can be represented as sum minimum of 8 Deci-Binary numbers {11111, 11111, 10111, 10101, 10100, 10100, 10100, 10000}.

**Approach: **The given problem can be solved based on the following observations:

Suppose

XDeci-Binary numbers are needed to obtain the sumS. To make the sum ofXDeci-Binary numbers ati-thplace equal to a digitdinS, there must be exactlydDeci-Binary numbers amongXnumbers having1at theithposition.

Therefore, the minimum number of Deci-Binary numbers required to obtain a sumSis equal to the maximum value of any of the digits ofS.

Therefore, to solve the problem, iterate over the characters of the string **S** and find the maximum digit present in it.

Below is the implementation of the above approach:

## C++

`// C++ Program to implemeent` `// the above approach` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to find the count of minimum` `// Deci-Binary numbers required to obtain S` `int` `minimum_deci_binary_number(string s)` `{` ` ` `// Stores the minimum count` ` ` `int` `m = INT_MIN;` ` ` `// Iterate over the string s` ` ` `for` `(` `int` `i = 0; i < s.size(); i++) {` ` ` `// Convert the char to its` ` ` `// equivalent integer` ` ` `int` `temp = s[i] - ` `'0'` `;` ` ` `// If current character is` ` ` `// the maximum so far` ` ` `if` `(temp > m) {` ` ` `// Update the maximum digit` ` ` `m = temp;` ` ` `}` ` ` `}` ` ` `// Print the required result` ` ` `return` `m;` `}` `// Driver Code` `int` `main()` `{` ` ` `string S = ` `"31"` `;` ` ` `cout << minimum_deci_binary_number(S);` ` ` `return` `0;` `}` |

*chevron_right*

*filter_none*

## Java

`// Java program to implemeent` `// the above approach` `class` `GFG{` ` ` `// Function to find the count of minimum` `// Deci-Binary numbers required to obtain S` `static` `int` `minimum_deci_binary_number(String s)` `{` ` ` ` ` `// Stores the minimum count` ` ` `int` `m = Integer.MIN_VALUE;` ` ` `// Iterate over the string s` ` ` `for` `(` `int` `i = ` `0` `; i < s.length(); i++) ` ` ` `{` ` ` ` ` `// Convert the char to its` ` ` `// equivalent integer` ` ` `int` `temp = s.charAt(i) - ` `'0'` `;` ` ` `// If current character is` ` ` `// the maximum so far` ` ` `if` `(temp > m) ` ` ` `{` ` ` ` ` `// Update the maximum digit` ` ` `m = temp;` ` ` `}` ` ` `}` ` ` ` ` `// Print the required result` ` ` `return` `m;` `}` `// Driver Code` `public` `static` `void` `main (String[] args)` `{` ` ` `String S = ` `"31"` `;` ` ` ` ` `System.out.println(minimum_deci_binary_number(S));` `}` `}` `// This code is contributed by AnkThon` |

*chevron_right*

*filter_none*

## Python3

`# Python3 Program to implemeent` `# the above approach` `# Function to find the count of minimum` `# Deci-Binary numbers required to obtain S` `def` `minimum_deci_binary_number(s):` ` ` ` ` `# Stores the minimum count` ` ` `m ` `=` `-` `10` `*` `*` `19` ` ` `# Iterate over the string s` ` ` `for` `i ` `in` `range` `(` `len` `(s)):` ` ` `# Convert the char to its ` ` ` `# equivalent integer` ` ` `temp ` `=` `ord` `(s[i]) ` `-` `ord` `(` `'0'` `)` ` ` `# If current character is` ` ` `# the maximum so far` ` ` `if` `(temp > m):` ` ` `# Update the maximum digit` ` ` `m ` `=` `temp` ` ` `# Prthe required result` ` ` `return` `m` `# Driver Code` `if` `__name__ ` `=` `=` `'__main__'` `:` ` ` `S ` `=` `"31"` ` ` `print` `(minimum_deci_binary_number(S))` `# This code is contributed by mohit kumar 29` |

*chevron_right*

*filter_none*

## C#

`// C# program to implemeent` `// the above approach` `using` `System;` `class` `GFG` `{` ` ` ` ` `// Function to find the count of minimum` ` ` `// Deci-Binary numbers required to obtain S` ` ` `static` `int` `minimum_deci_binary_number(` `string` `s)` ` ` `{` ` ` ` ` `// Stores the minimum count` ` ` `int` `m = ` `int` `.MinValue;` ` ` ` ` `// Iterate over the string s` ` ` `for` `(` `int` `i = 0; i < s.Length; i++) ` ` ` `{` ` ` ` ` `// Convert the char to its` ` ` `// equivalent integer` ` ` `int` `temp = s[i] - ` `'0'` `;` ` ` ` ` `// If current character is` ` ` `// the maximum so far` ` ` `if` `(temp > m) ` ` ` `{` ` ` ` ` `// Update the maximum digit` ` ` `m = temp;` ` ` `}` ` ` `}` ` ` ` ` `// Print the required result` ` ` `return` `m;` ` ` `}` ` ` ` ` `// Driver Code` ` ` `public` `static` `void` `Main (String[] args)` ` ` `{` ` ` `string` `S = ` `"31"` `; ` ` ` `Console.WriteLine(minimum_deci_binary_number(S));` ` ` `}` `}` `// This code is contributed by AnkThon` |

*chevron_right*

*filter_none*

**Output:**

3

**Time Complexity:** O(N)**Auxiliary Space:** O(N)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready.