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[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)2is the nearest perfect square.
- Print the nearest perfect square obtained in the above step.
Below is the implementation of the above approach:
// 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 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 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# 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. |
<script> // Javascript program to implement // the above approach // Function to find the nearest even and odd // perfect squares for even and odd array elements function nearestPerfectSquare(arr, N)
{ // Traverse the array
for (let i = 0; i < N; i++)
{
// Calculate square root of
// current array element
let sr = Math.floor(Math.sqrt(arr[i]));
// If both are of same parity
if ((sr & 1) == (arr[i] & 1))
document.write((sr * sr) + " " );
// Otherwise
else
{
sr++;
document.write((sr * sr) + " " );
}
}
} // Driver code // Given array let arr = [ 6, 3, 2, 15 ]; let N = arr.length; nearestPerfectSquare(arr, N); // This code is contributed by target_2 </script> |
4 1 4 9
Time Complexity: O(N*logN) where N is size of given array
Auxiliary Space: O(1)