Smallest and Largest sum of two n-digit numbers

Last Updated : 07 Jun, 2022

Given an integer N ? 1, the task is to find the smallest and the largest sum of two N digit numbers.
Examples:

Input: N = 1
Output:
Largest = 18
Smallest = 0
Largest 1-digit number is 9 and 9 + 9 = 18
Smallest 1-digit number is 0 and 0 + 0 = 0
Input: N = 2
Output:
Largest = 198
Smallest = 20

Approach:

• For largest: The answer will be 2 * (10N – 1) because the series of sum of two n digit numbers will go on like 2 * 9, 2 * 99, 2 * 999, …
• For smallest:
• If N = 1 then the answer will be 0.
• If N > 1 then the answer will be 2 * (10N â€“ 1) because the series of sum of two n digit numbers will go on like 0, 20, 200, 2000, …

Below is the implementation of the above approach:

C++

 `// C++ implementation of the approach` `#include ` `using` `namespace` `std;`   `// Function to return the smallest sum` `// of 2 n-digit numbers` `int` `smallestSum(``int` `n)` `{` `    ``if` `(n == 1)` `        ``return` `0;` `    ``return` `(2 * ``pow``(10, n - 1));` `}`   `// Function to return the largest sum` `// of 2 n-digit numbers` `int` `largestSum(``int` `n)` `{` `    ``return` `(2 * (``pow``(10, n) - 1));` `}`   `// Driver code` `int` `main()` `{` `    ``int` `n = 4;` `    ``cout << ``"Largest = "` `<< largestSum(n) << endl;` `    ``cout << ``"Smallest = "` `<< smallestSum(n);`   `    ``return` `0;` `}`

Java

 `// Java implementation of the approach` `class` `GFG {`   `    ``// Function to return the smallest sum` `    ``// of 2 n-digit numbers` `    ``static` `int` `smallestSum(``int` `n)` `    ``{` `        ``if` `(n == ``1``)` `            ``return` `0``;` `        ``return` `(``2` `* (``int``)Math.pow(``10``, n - ``1``));` `    ``}`   `    ``// Function to return the largest sum` `    ``// of 2 n-digit numbers` `    ``static` `int` `largestSum(``int` `n)` `    ``{` `        ``return` `(``2` `* ((``int``)Math.pow(``10``, n) - ``1``));` `    ``}`   `    ``// Driver code` `    ``public` `static` `void` `main(String args[])` `    ``{` `        ``int` `n = ``4``;` `        ``System.out.println(``"Largest = "` `+ largestSum(n));` `        ``System.out.print(``"Smallest = "` `+ smallestSum(n));` `    ``}` `}`

Python3

 `# Python3 implementation of the approach`   `# Function to return the smallest sum ` `# of 2 n-digit numbers ` `def` `smallestSum(n):` ` `  `    ``if` `(n ``=``=` `1``):` `        ``return` `0` `    ``return` `(``2` `*` `pow``(``10``, n ``-` `1``))`   `# Function to return the largest sum ` `# of 2 n-digit numbers ` `def` `largestSum(n):` `    ``return` `(``2` `*` `(``pow``(``10``, n) ``-` `1``))`   `# Driver code` `n ``=` `4` `print``(``"Largest = "``, largestSum(n))` `print``(``"Smallest = "``, smallestSum(n))`

C#

 `// C# implementation of the approach` `using` `System;` `class` `GFG {`   `    ``// Function to return the smallest sum` `    ``// of 2 n-digit numbers` `    ``static` `int` `smallestSum(``int` `n)` `    ``{` `        ``if` `(n == 1)` `            ``return` `0;` `        ``return` `(2 * (``int``)Math.Pow(10, n - 1));` `    ``}`   `    ``// Function to return the largest sum` `    ``// of 2 n-digit numbers` `    ``static` `int` `largestSum(``int` `n)` `    ``{` `        ``return` `(2 * ((``int``)Math.Pow(10, n) - 1));` `    ``}`   `    ``// Driver code` `    ``public` `static` `void` `Main()` `    ``{` `        ``int` `n = 4;` `        ``Console.WriteLine(``"Largest = "` `+ largestSum(n));` `        ``Console.Write(``"Smallest = "` `+ smallestSum(n));` `    ``}` `}`

PHP

 ``

Javascript

 ``

Output:

```Largest = 19998
Smallest = 2000```

Time Complexity: O(log n)

Auxiliary Space: O(1)