Dada una array arr[] que consta de N enteros positivos, la tarea es imprimir el cuadrado perfecto más cercano para cada elemento de la array.
Ejemplos:
Entrada: arr[] = {5, 2, 7, 13}
Salida: 4 1 9 16
Explicación:
El cuadrado perfecto más cercano de arr[0] (= 5) es 4.
El cuadrado perfecto más cercano de arr[1] (= 2) es 1.
El cuadrado perfecto más cercano de arr[2] (= 7) es 9.
El cuadrado perfecto más cercano de arr[3] (= 13) es 16.Entrada: arr[] = {31, 18, 64}
Salida: 36 16 64
Enfoque: siga los pasos a continuación para resolver el problema:
- Atraviesa la array de izquierda a derecha.
- Para cada elemento de la array, encuentre el cuadrado perfecto más cercano
- Si N es un cuadrado perfecto , imprima N
- De lo contrario, encuentra el primer número cuadrado perfecto > N y observa su diferencia con N .
- Luego, encuentre el primer número cuadrado perfecto < N y observe su diferencia con N .
- E imprima el cuadrado perfecto que resulte en el mínimo de estas dos diferencias obtenidas
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program for the above approach #include <bits/stdc++.h> using namespace std; // Function to find the nearest perfect square // for every element in the given array void nearestPerfectSquare(int arr[], int N) { // Traverse the array for (int i = 0; i < N; i++) { // Calculate square root of // current element int sr = sqrt(arr[i]); // Calculate perfect square int a = sr * sr; int b = (sr + 1) * (sr + 1); // Find the nearest if ((arr[i] - a) < (b - arr[i])) cout << a << " "; else cout << b << " "; } } // Driver Code int main() { int arr[] = { 5, 2, 7, 13 }; int N = sizeof(arr) / sizeof(arr[0]); nearestPerfectSquare(arr, N); return 0; }
Java
// Java program for the above approach import java.io.*; class GFG{ // Function to find the nearest perfect square // for every element in the given array static void nearestPerfectSquare(int[] arr, int N) { // Traverse the array for(int i = 0; i < N; i++) { // Calculate square root of // current element int sr = (int)Math.sqrt(arr[i]); // Calculate perfect square int a = sr * sr; int b = (sr + 1) * (sr + 1); // Find the nearest if ((arr[i] - a) < (b - arr[i])) System.out.print(a + " "); else System.out.print(b + " "); } } // Driver Code public static void main(String[] args) { int[] arr = { 5, 2, 7, 13 }; int N = arr.length; nearestPerfectSquare(arr, N); } } // This code is contributed by souravmahato348
Python3
# Python program for the above approach # Function to find the nearest perfect square # for every element in the given array # import the math module import math def nearestPerfectSquare(arr,N): # Traverse the array for i in range(0,N): # Calculate square root of # current element sr = math.floor(math.sqrt(arr[i])) # Calculate perfect square a = sr * sr b = (sr + 1) * (sr + 1) # Find the nearest if ((arr[i] - a) < (b - arr[i])): print(a ,end=" ") else : print(b ,end=" ") # Driver Code arr = [5, 2, 7, 13] N = len(arr) nearestPerfectSquare(arr, N) # This code is contributed by shivanisinghss2110
C#
// C# program for the above approach using System; class GFG { // Function to find the nearest perfect square // for every element in the given array static void nearestPerfectSquare(int[] arr, int N) { // Traverse the array for (int i = 0; i < N; i++) { // Calculate square root of // current element int sr = (int)Math.Sqrt(arr[i]); // Calculate perfect square int a = sr * sr; int b = (sr + 1) * (sr + 1); // Find the nearest if ((arr[i] - a) < (b - arr[i])) Console.Write(a + " "); else Console.Write(b + " "); } } // Driver Code public static void Main() { int[] arr = { 5, 2, 7, 13 }; int N = arr.Length; nearestPerfectSquare(arr, N); } } // This code is contributed by souravmahato348
Javascript
<script> // JavaScript program for the above approach // Function to find the nearest perfect square // for every element in the given array function nearestPerfectSquare(arr, N) { // Traverse the array for (let i = 0; i < N; i++) { // Calculate square root of // current element let sr = parseInt(Math.sqrt(arr[i])); // Calculate perfect square let a = sr * sr; let b = (sr + 1) * (sr + 1); // Find the nearest if ((arr[i] - a) < (b - arr[i])) document.write(a + " "); else document.write(b + " "); } } // Driver Code let arr = [ 5, 2, 7, 13 ]; let N = arr.length; nearestPerfectSquare(arr, N); </script>
4 1 9 16
Complejidad de tiempo: O(N * sqrt(arr[i]))
Espacio Auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por subhammahato348 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA