Sunday, September 22, 2024
Google search engine
HomeData Modelling & AISmallest number whose square has N digits

Smallest number whose square has N digits

Given a number N, the task is to find the smallest number whose square has N digits.
Examples: 
 

Input: N = 2 
Output:
Explanation: 
32 = 9, which has 1 digit. 
42 = 16, which has 2 digits. 
Hence, 4 is the smallest number whose square has N digits.
Input: N = 3 
Output: 10 
Explanation: 
102 = 100, which has 3 digits. 
 

 

Naive Approach: The simplest approach to solve the problem is to calculate the square of each number starting from and count the number of digits in its square. Print the first number whose square is obtained to be of N digits. 
Time Complexity: O(?(10N))
Efficient Approach: To solve the problem, we need to make the following observations: 
 

The smallest number whose square has 1 digit = 1 
The smallest number whose square has 2 digits = 4 
The smallest number whose square has 3 digits = 10 
The smallest number whose square has 4 digits = 32 
The smallest number whose square has 5 digits = 100
Hence, these numbers form a series 1, 4, 10, 32, 100, 317, ……. 
 

Now, we need to find a formula for the Nth term of the series. 
The terms of the series can be expressed in the following form: 
 

If N = 1, Smallest number possible is 1. 
T(1) = \lceil 10^{\frac{1-1}{2}}\rceil = 1
If N = 2, Smallest number possible is 41. 
T(2) = \lceil 10^{\frac{2-1}{2}}\rceil = 4
If N = 3, Smallest number possible is 10. 
T(3) = \lceil 10^{\frac{3 -1}{2}}\rceil = 10
 

Hence, we can conclude that the Nth of the series can be expressed as 
 

T(N) = \lceil 10^{\frac{N-1}{2}}\rceil
 

Hence, in order to solve the problem, we just need to calculate ceil(10(N – 1)/ 2) for the given integer N.
Below is the implementation of the above approach: 
 

C++




// C++ Program to find the smallest
// number whose square has N digits
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to return smallest number
// whose square has N digits
int smallestNum(int N)
{
 
    // Calculate N-th term of the series
    float x = pow(10.0, (N - 1) / 2.0);
    return ceil(x);
}
 
// Driver Code
int main()
{
    int N = 4;
    cout << smallestNum(N);
 
    return 0;
}


Java




// Java program for above approach
class GFG{
 
// Function to return smallest number
// whose square has N digits
static int smallestNum(int N)
{
  
    // Calculate N-th term of the series
    float x = (float)(Math.pow(10, (N - 1) / 2.0));
    return (int)(Math.ceil(x));
}
 
// Driver code
public static void main(String[] args)
{
    int N = 4;
    System.out.print(smallestNum(N));
}
}
 
// This code is contributed by spp


Python3




# Python3 Program to find the smallest
# number whose square has N digits
import math;
 
# Function to return smallest number
# whose square has N digits
def smallestNum(N):
 
    # Calculate N-th term of the series
    x = pow(10.0, (N - 1) / 2.0);
    return math.ceil(x);
 
# Driver Code
N = 4;
print(smallestNum(N));
 
# This code is contributed by Code_mech


C#




// C# program for above approach
using System;
class GFG{
 
// Function to return smallest number
// whose square has N digits
static int smallestNum(int N)
{
 
    // Calculate N-th term of the series
    float x = (float)(Math.Pow(10, (N - 1) / 2.0));
    return (int)(Math.Ceiling(x));
}
 
// Driver code
public static void Main()
{
    int N = 4;
    Console.Write(smallestNum(N));
}
}
 
// This code is contributed by Code_Mech


Javascript




<script>
// java script  Program to find the smallest
// number whose square has N digits
// Function to return smallest number
// whose square has N digits
function smallestNum(N)
{
 
    // Calculate N-th term of the series
    x = Math.pow(10.0, (N - 1) / 2.0);
    return Math.ceil(x);
}
 
// Driver Code
let N = 4;
document.write(smallestNum(N));
     
// This code is contributed by Gottumukkala Bobby
</script>


Output: 

32

 

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

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

RELATED ARTICLES

Most Popular

Recent Comments