Related Articles
Find the smallest number whose sum of digits is N
• Difficulty Level : Easy
• Last Updated : 05 Apr, 2021

Given a positive integers N, the task is to find the smallest number whose sum of digits is N.
Example:

Input: N = 10
Output: 19
Explanation:
1 + 9 = 10 = N

Input: N = 18
Output: 99
Explanation:
9 + 9 = 18 = N

Naive Approach:

• A Naive approach is to run a loop of i starting from 0 and find Sum of digits of i and check if it’s equal to N or not.

Below is the implementation of the above approach.

## C++

 // C++ program to find the smallest// number whose sum of digits is also N#include #include using namespace std; // Function to get sum of digitsint getSum(int n){    int sum = 0;    while (n != 0) {        sum = sum + n % 10;        n = n / 10;    }    return sum;} // Function to find the smallest// number whose sum of digits is also Nvoid smallestNumber(int N){    int i = 1;    while (1) {        // Checking if number has        // sum of digits = N        if (getSum(i) == N) {            cout << i;            break;        }        i++;    }} // Driver codeint main(){    int N = 10;    smallestNumber(N);     return 0;}

## Java

 // Java program to find the smallest// number whose sum of digits is also Nclass GFG{ // Function to get sum of digitsstatic int getSum(int n){    int sum = 0;    while (n != 0)    {        sum = sum + n % 10;        n = n / 10;    }    return sum;} // Function to find the smallest// number whose sum of digits is also Nstatic void smallestNumber(int N){    int i = 1;    while (1 != 0)    {        // Checking if number has        // sum of digits = N        if (getSum(i) == N)        {            System.out.print(i);            break;        }        i++;    }} // Driver codepublic static void main(String[] args){    int N = 10;    smallestNumber(N);}} // This code is contributed// by shivanisinghss2110

## Python3

 # Python3 program to find the smallest# number whose sum of digits is also N # Function to get sum of digitsdef getSum(n):     sum1 = 0;    while (n != 0):        sum1 = sum1 + n % 10;        n = n // 10;         return sum1; # Function to find the smallest# number whose sum of digits is also Ndef smallestNumber(N):     i = 1;    while (1):        # Checking if number has        # sum of digits = N        if (getSum(i) == N):            print(i);            break;                 i += 1;     # Driver codeN = 10;smallestNumber(N); # This code is contributed by Code_Mech

## C#

 // C# program to find the smallest// number whose sum of digits is also Nusing System; class GFG{ // Function to get sum of digitsstatic int getSum(int n){    int sum = 0;    while (n != 0)    {        sum = sum + n % 10;        n = n / 10;    }    return sum;} // Function to find the smallest// number whose sum of digits is also Nstatic void smallestNumber(int N){    int i = 1;    while (1 != 0)    {                 // Checking if number has        // sum of digits = N        if (getSum(i) == N)        {            Console.Write(i);            break;        }        i++;    }} // Driver codepublic static void Main(String[] args){    int N = 10;         smallestNumber(N);}} // This code is contributed by Amit Katiyar

## Javascript

 
Output

19

Time Complexity: O(N).
Efficient Approach:

• An efficient approach to this problem is an observation. Let’s see some examples.
• If N = 10, then ans = 19
• If N = 20, then ans = 299
• If N = 30, then ans = 3999
• So, it is clear that the answer will have all digits as 9 except the first one so that we get the smallest number.
• So, the Nth term will be = Below is the implementation of the above approach

## C++

 // C++ program to find the smallest// number whose sum of digits is also N#include #include using namespace std; // Function to find the smallest// number whose sum of digits is also Nvoid smallestNumber(int N){    cout << (N % 9 + 1)                    * pow(10, (N / 9))                - 1;} // Driver codeint main(){    int N = 10;    smallestNumber(N);     return 0;}

## Java

 // Java program to find the smallest// number whose sum of digits is also Nclass GFG{  // Function to find the smallest// number whose sum of digits is also Nstatic void smallestNumber(int N){    System.out.print((N % 9 + 1) *            Math.pow(10, (N / 9)) - 1);}  // Driver codepublic static void main(String[] args){    int N = 10;    smallestNumber(N);}} // This code is contributed by sapnasingh4991

## Python3

 # Python3 program to find the smallest# number whose sum of digits is also N # Function to find the smallest# number whose sum of digits is also Ndef smallestNumber(N):     print((N % 9 + 1) * pow(10, (N // 9)) - 1) # Driver codeN = 10smallestNumber(N) # This code is contributed by Code_Mech

## C#

 // C# program to find the smallest// number whose sum of digits is also Nusing System;class GFG{ // Function to find the smallest// number whose sum of digits is also Nstatic void smallestNumber(int N){    Console.WriteLine((N % 9 + 1) *             Math.Pow(10, (N / 9)) - 1);} // Driver codepublic static void Main(){    int N = 10;         smallestNumber(N);}} // This code is contributed by Ritik Bansal

## Javascript

 
Output
19

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up