Given an integer N, the task is to find the smallest number whose sum of digits is N2.
Examples:
Input: N = 4
Output: 79
24 = 16
sum of digits of 79 = 76Input: N = 6
Output: 9999
210 = 1024 which has 4 digits
Approach: The idea is to find the general term for the smallest number whose sum of digits is square of N. That is
// First Few terms First Term = 1 // N = 1 Second Term = 4 // N = 2 Third Term = 9 // N = 3 Fourth Term = 79 // N = 4 . . Nth Term:
*** QuickLaTeX cannot compile formula: *** Error message: Error: Nothing to show, formula is empty
<sup>(n^2 \% 9 + 1) * 10 ^ {\lfloor n^2/9 \rfloor} - 1 </sup>
Below is the implementation of the above approach:
C++
// C++ implementation of the above approach #include <bits/stdc++.h> using namespace std;
// Function to return smallest // number whose sum of digits is n^2 int smallestNum( int n)
{ return (n * n % 9 + 1) * pow (10, n * n / 9) - 1;
} // Driver Code int main()
{ int n = 4;
cout << smallestNum(n);
return 0;
} |
Java
// Java implementation of the above approach import java.util.*;
class GFG{
// Function to return smallest // number whose sum of digits is n^2 static int smallestNum( int n)
{ return ( int )((n * n % 9 + 1 ) *
Math.pow( 10 , n * n / 9 ) - 1 );
} // Driver Code public static void main(String[] args)
{ int n = 4 ;
System.out.print(smallestNum(n));
} } // This code is contributed by Rajput-Ji |
Python 3
# Python implementation of the above approach # Function to return smallest # number whose sum of digits is n^2 def smallestNum(n):
return ((n * n % 9 + 1 ) *
pow ( 10 , int (n * n / 9 )) - 1 )
# Driver Code # Given N N = 4
print (smallestNum(N))
# This code is contributed by Vishal Maurya. |
C#
// C# implementation of the above approach using System;
class GFG{
// Function to return smallest // number whose sum of digits is n^2 static int smallestNum( int n)
{ return ( int )((n * n % 9 + 1) *
Math.Pow(10, n * n / 9) - 1);
} // Driver Code public static void Main(String[] args)
{ int n = 4;
Console.Write(smallestNum(n));
} } // This code is contributed by Rajput-Ji |
Javascript
<script> // Javascript implementation of the above approach // Function to return smallest
// number whose sum of digits is n^2
function smallestNum( n) {
return parseInt (n * n % 9 + 1) * Math.pow(10, parseInt(n*n / 9)) -1;
}
// Driver Code
let n = 4;
document.write(smallestNum(n));
// This code contributed by aashish1995 </script> |
Output
10 79
Time complexity: O(log10n2) for given n, as pow function is being used
Auxiliary space: O(1)