Related Articles

# Count of perfect squares of given length

• Difficulty Level : Basic
• Last Updated : 08 Apr, 2021

Given an integer N, the task is to find the number of perfect squares of length N.
Examples:

Input: N = 1
Output:
Explanation: The single digit perfect squares are 1, 4 and 9.
Input: N = 2
Output:
Explanation: The two-digit perfect squares are 16, 25, 36, 49, 64 and 81.

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.

Naive Approach: In order to solve this problem, we can check all the numbers between 10( N – 1 ) and 10N – 1 and increment the counter whenever we encounter a perfect square.
Below is the implementation of the above approach:

## C++

 // C++ Program to count perfect// squares of given length #include using namespace std; // Function to check if a// number is perfect squarebool isPerfectSquare(long double x){    // Find floating point value of    // square root of x.    long double sr = sqrt(x);     // If square root is an integer    return ((sr - floor(sr)) == 0);} // Function to return the count of// n digit perfect squaresint countSquares(int n){    // Initialize result    int cnt = 0;     // Traverse through all numbers    // of n digits    for (int i = pow(10, (n - 1));         i < pow(10, n); i++) {         // Check if current number        // 'i' is perfect square        if (i != 0 && isPerfectSquare(i))            cnt++;    }    return cnt;} // Driver codeint main(){    int n = 3;    cout << countSquares(n);    return 0;}

## Java

 // Java Program to count perfect// squares of given lengthclass GFG{ // Function to check if a// number is perfect squarestatic boolean isPerfectSquare(double x){         // Find floating point value of    // square root of x.    double sr = Math.sqrt(x);     // If square root is an integer    return ((sr - Math.floor(sr)) == 0);} // Function to return the count of// n digit perfect squaresstatic int countSquares(int n){         // Initialize result    int cnt = 0;     // Traverse through all numbers    // of n digits    for(int i = (int) Math.pow(10, (n - 1));                  i < Math.pow(10, n); i++)    {         // Check if current number        // 'i' is perfect square        if (i != 0 && isPerfectSquare(i))            cnt++;    }    return cnt;} // Driver codepublic static void main(String[] args){    int n = 3;    System.out.print(countSquares(n));}} // This code is contributed by Rajput-Ji

## Python3

 # Python3 Program to count perfect# squares of given lengthimport math; # Function to check if a# number is perfect squaredef isPerfectSquare(x):     # Find floating point value of    # square root of x.    sr = math.sqrt(x);     # If square root is an integer    return ((sr - math.floor(sr)) == 0); # Function to return the count of# n digit perfect squaresdef countSquares(n):     # Initialize result    cnt = 0;     # Traverse through all numbers    # of n digits    for i in range(int(math.pow(10, (n - 1))),                   int(math.pow(10, n))):         # Check if current number        # 'i' is perfect square        if (i != 0 and isPerfectSquare(i)):            cnt += 1;         return cnt; # Driver coden = 3;print(countSquares(n)); # This code is contributed by Akanksha_Rai

## C#

 // C# program to count perfect// squares of given lengthusing System; class GFG{ // Function to check if a// number is perfect squarestatic bool isPerfectSquare(double x){         // Find floating point value of    // square root of x.    double sr = Math.Sqrt(x);     // If square root is an integer    return ((sr - Math.Floor(sr)) == 0);} // Function to return the count of// n digit perfect squaresstatic int countSquares(int n){         // Initialize result    int cnt = 0;     // Traverse through all numbers    // of n digits    for(int i = (int) Math.Pow(10, (n - 1));                  i < Math.Pow(10, n); i++)    {        // Check if current number       // 'i' is perfect square       if (i != 0 && isPerfectSquare(i))           cnt++;    }    return cnt;} // Driver codepublic static void Main(String[] args){    int n = 3;         Console.Write(countSquares(n));}} // This code is contributed by sapnasingh4991

## Javascript

 
Output:

22

Efficient Approach: In order to solve this problem we can simply find the number of perfect squares of length N using a formula:

1. A number n has d digits if 2. Hence, a perfect square n2 has d digits if or 3. Thus, the required answer for count of perfect squares of N digits is Below is the implementation of the above approach:

## C++

 // C++ Program to count// perfect squares of given length #include using namespace std; // Function to return the count of// n digit perfect squaresint countSquares(int n){    int r = ceil(sqrt(pow(10, n)));    int l = ceil(sqrt(pow(10, n - 1)));    return r - l;} // Driver codeint main(){    int n = 3;    cout << countSquares(n);    return 0;}

## Java

 // Java Program to count perfect// squares of given lengthclass GFG{ // Function to return the count// of n digit perfect squaresstatic int countSquares(int n){    int r = (int) Math.ceil(Math.sqrt                           (Math.pow(10, n)));    int l = (int) Math.ceil(Math.sqrt                           (Math.pow(10, n - 1)));    return r - l;} // Driver codepublic static void main(String[] args){    int n = 3;    System.out.print(countSquares(n));}} // This code is contributed by Rohit_ranjan

## Python3

 # Python3 program to count perfect # squares of given lengthimport math # Function to return the count# of n digit perfect squaresdef countSquares(n):     r = math.ceil(math.sqrt                 (math.pow(10, n)));    l = math.ceil(math.sqrt                 (math.pow(10, n - 1)));         return r - l;     # Driver coden = 3;print(countSquares(n)); # This code is contributed by grand_master

## C#

 // C# Program to count perfect// squares of given lengthusing System;class GFG{ // Function to return the count// of n digit perfect squaresstatic int countSquares(int n){    int r = (int) Math.Ceiling(Math.Sqrt                              (Math.Pow(10, n)));    int l = (int) Math.Ceiling(Math.Sqrt                              (Math.Pow(10, n - 1)));    return r - l;} // Driver codepublic static void Main(){    int n = 3;    Console.Write(countSquares(n));}} // This code is contributed by Nidhi_Biet

## Javascript

 
Output:
22

Time Complexity: O(N)

Auxiliary Space: O(1)

My Personal Notes arrow_drop_up