 Open in App
Not now

# Minimum count of digits required to obtain given Sum

• Difficulty Level : Expert
• Last Updated : 10 May, 2021

Given an integer N, the task is to find the minimum number of digits required to generate a number having the sum of digits equal to N.

Examples:

Input: N = 18
Output:
Explanation:
The number with smallest number of digits having sum of digits equal to 18 is 99.

Input: N = 28
Output:
Explanation:
4-digit numbers like 8884, 6877, etc are the smallest in length having sum of digits equal to 28.

Approach: The problem can be solved by the following observations:

1. Increment count by 9. Therefore, now count is equal to the number of 9’s in the shortest number. Reduce N to N % 9
2. Now, if N exceeds 0, increment count by 1.
3. Finally, print count as the answer.

Below is the implementation of the above approach:

## C++

 `// C++ program to implement` `// the above approach` `#include ` `using` `namespace` `std;`   `// Function to return the` `// minimum count of digits` `void` `mindigits(``int` `n)` `{` `    ``// IF N is divisible by 9` `    ``if` `(n % 9 == 0) {`   `        ``// Count of 9's is the answer` `        ``cout << n / 9 << endl;` `    ``}` `    ``else` `{`   `        ``// If remainder is non-zero` `        ``cout << (n / 9) + 1 << endl;` `    ``}` `}`   `// Driver Code` `int` `main()` `{` `    ``int` `n1 = 24;` `    ``int` `n2 = 14;` `    ``mindigits(n1);` `    ``mindigits(n2);` `}`

## Java

 `// Java program to implement` `// the above approach` `// required to make the given sum` `import` `java.util.*;`   `class` `Main {`   `    ``// Function to print the minimum` `    ``// count of digits` `    ``static` `void` `mindigits(``int` `n)` `    ``{`   `        ``// IF N is divisible by 9` `        ``if` `(n % ``9` `== ``0``) {`   `            ``// Count of 9's is the answer` `            ``System.out.println(n / ``9``);` `        ``}` `        ``else` `{`   `            ``// If remainder is non-zero` `            ``System.out.println((n / ``9``) + ``1``);` `        ``}` `    ``}`   `    ``// Driver Code` `    ``public` `static` `void` `main(String[] args)` `    ``{` `        ``int` `n1 = ``24``;` `        ``int` `n2 = ``18``;` `        ``mindigits(n1);` `        ``mindigits(n2);` `    ``}` `}`

## Python3

 `# Python3 program to implement` `# the above approach`   `# Function to print the minimum` `# count of digits` `def` `mindigits(n):` `    `  `    ``# IF N is divisible by 9` `    ``if` `(n ``%` `9` `=``=` `0``):`   `        ``# Count of 9's is the answer` `        ``print``(n ``/``/` `9``);` `    ``else``:`   `        ``# If remainder is non-zero` `        ``print``((n ``/``/` `9``) ``+` `1``);`   `# Driver Code` `if` `__name__ ``=``=` `'__main__'``:` `    `  `    ``n1 ``=` `24``;` `    ``n2 ``=` `18``;` `    `  `    ``mindigits(n1);` `    ``mindigits(n2);`   `# This code is contributed by amal kumar choubey`

## C#

 `// C# program to implement` `// the above approach` `using` `System;`   `class` `GFG{`   `// Function to print the minimum` `// count of digits` `static` `void` `mindigits(``int` `n)` `{` `    `  `    ``// IF N is divisible by 9` `    ``if` `(n % 9 == 0)` `    ``{` `        `  `        ``// Count of 9's is the answer` `        ``Console.WriteLine(n / 9);` `    ``}` `    ``else` `    ``{` `        `  `        ``// If remainder is non-zero` `        ``Console.WriteLine((n / 9) + 1);` `    ``}` `}`   `// Driver Code` `public` `static` `void` `Main(String[] args)` `{` `    ``int` `n1 = 24;` `    ``int` `n2 = 18;` `    `  `    ``mindigits(n1);` `    ``mindigits(n2);` `}` `}`   `// This code is contributed by 29AjayKumar`

## Javascript

 ``

Output:

```3
2```

Time Complexity: O(1)
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up
Related Articles