 GeeksforGeeks App
Open App Browser
Continue

# Find the nearest odd and even perfect squares of odd and even array elements respectively

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 9
Explanation:
The nearest even perfect square of arr (= 6) is 4.
The nearest odd perfect square of arr (= 3) is 1.
The nearest even perfect square of arr (= 2) is 4
The nearest odd perfect square of arr (= 15) is 9.

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

Approach: Follow the steps below to solve the problem:

Below is the implementation of the above approach:

## C++

 `// C++ program to implement``// the above approach``#include ``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);``    ``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.`

## Javascript

 ``

Output:

`4 1 4 9`

Time Complexity: O(N*logN) where N is size of given array
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up