Given an array **arr[ ]** of size **N**, the task for each array element is to print the nearest perfect square having same parity.

**Examples:**

Input: arr[ ] = {6, 3, 2, 15}Output: 4 1 4 9Explanation:

The nearest even perfect square of arr[0] (= 6) is 4.

The nearest odd perfect square of arr[1] (= 3) is 1.

The nearest even perfect square of arr[2] (= 2) is 4

The nearest odd perfect square of arr[3] (= 15) is 9.

Input: arr[ ] = {31, 18, 64}Output: 25 16 64

**Approach:** Follow the steps below to solve the problem:

- Traverse the array and perform the following operations:
- Find the square root of the current array element and store it in a variable, say
**sr**. - If
**sr**is of same parity as**arr[i]**, then**sr*sr**is the nearest perfect square. - Otherwise,
**(sr + 1)**is the nearest perfect square.^{2} - Print the nearest perfect square obtained in the above step.

- Find the square root of the current array element and store it in a variable, say

Below is the implementation of the above approach:

## C++

`// C++ program to implement` `// the above approach` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to find the nearest even and odd` `// perfect squares for even and odd array elements` `void` `nearestPerfectSquare(` `int` `arr[], ` `int` `N)` `{` ` ` `// Traverse the array` ` ` `for` `(` `int` `i = 0; i < N; i++) {` ` ` `// Calculate square root of` ` ` `// current array element` ` ` `int` `sr = ` `sqrt` `(arr[i]);` ` ` `// If both are of same parity` ` ` `if` `((sr & 1) == (arr[i] & 1))` ` ` `cout << sr * sr << ` `" "` `;` ` ` `// Otherwise` ` ` `else` `{` ` ` `sr++;` ` ` `cout << sr * sr << ` `" "` `;` ` ` `}` ` ` `}` `}` `// Driver Code` `int` `main()` `{` ` ` `int` `arr[] = { 6, 3, 2, 15 };` ` ` `int` `N = ` `sizeof` `(arr) / ` `sizeof` `(arr[0]);` ` ` `nearestPerfectSquare(arr, N);` ` ` `return` `0;` `}` |

## Java

`// Java program to implement` `// the above approach` `import` `java.util.*;` `class` `GFG` `{` `// Function to find the nearest even and odd` `// perfect squares for even and odd array elements` `static` `void` `nearestPerfectSquare(` `int` `arr[], ` `int` `N)` `{` ` ` `// Traverse the array` ` ` `for` `(` `int` `i = ` `0` `; i < N; i++) {` ` ` `// Calculate square root of` ` ` `// current array element` ` ` `int` `sr = (` `int` `)Math.sqrt(arr[i]);` ` ` `// If both are of same parity` ` ` `if` `((sr & ` `1` `) == (arr[i] & ` `1` `))` ` ` `System.out.print((sr * sr) + ` `" "` `);` ` ` `// Otherwise` ` ` `else` `{` ` ` `sr++;` ` ` `System.out.print((sr * sr) + ` `" "` `);` ` ` `}` ` ` `}` `}` `// Driver Code` `public` `static` `void` `main(String[] args)` `{` ` ` `int` `arr[] = { ` `6` `, ` `3` `, ` `2` `, ` `15` `};` ` ` `int` `N = arr.length;` ` ` `nearestPerfectSquare(arr, N);` `}` `}` `// This code is contributed by souravghosh0416.` |

## Python3

`# Python3 program for the above approach` `import` `math` `# Function to find the nearest even and odd` `# perfect squares for even and odd array elements` `def` `nearestPerfectSquare(arr, N) :` ` ` `# Traverse the array` ` ` `for` `i ` `in` `range` `(N):` ` ` `# Calculate square root of` ` ` `# current array element` ` ` `sr ` `=` `int` `(math.sqrt(arr[i]))` ` ` `# If both are of same parity` ` ` `if` `((sr & ` `1` `) ` `=` `=` `(arr[i] & ` `1` `)) :` ` ` `print` `(sr ` `*` `sr, end ` `=` `" "` `)` ` ` `# Otherwise` ` ` `else` `:` ` ` `sr ` `+` `=` `1` ` ` `print` `(sr ` `*` `sr, end ` `=` `" "` `)` ` ` `# Driver Code` `arr ` `=` `[ ` `6` `, ` `3` `, ` `2` `, ` `15` `]` `N ` `=` `len` `(arr)` `nearestPerfectSquare(arr, N)` `# This code is contributed by sanjoy_62.` |

## C#

`// C# program for the above approach` `using` `System;` `class` `GFG{` ` ` `// Function to find the nearest even and odd` ` ` `// perfect squares for even and odd array elements` ` ` `static` `void` `nearestPerfectSquare(` `int` `[] arr, ` `int` `N)` ` ` `{` ` ` `// Traverse the array` ` ` `for` `(` `int` `i = 0; i < N; i++) {` ` ` `// Calculate square root of` ` ` `// current array element` ` ` `int` `sr = (` `int` `)Math.Sqrt(arr[i]);` ` ` `// If both are of same parity` ` ` `if` `((sr & 1) == (arr[i] & 1))` ` ` `Console.Write((sr * sr) + ` `" "` `);` ` ` `// Otherwise` ` ` `else` `{` ` ` `sr++;` ` ` `Console.Write((sr * sr) + ` `" "` `);` ` ` `}` ` ` `}` ` ` `}` ` ` ` ` `// Driver Code` ` ` `static` `public` `void` `Main()` ` ` `{` ` ` `int` `[] arr = { 6, 3, 2, 15 };` ` ` `int` `N = arr.Length;` ` ` `nearestPerfectSquare(arr, N);` ` ` `}` `}` `// This code is contributed by splevel62.` |

**Output:**

4 1 4 9

**Time Complexity: **O(N * M)**Auxiliary Space: **O(1)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready.