Dada una array circular arr[] que consta de N enteros, la tarea es reemplazar todos los elementos de la array con la potencia más cercana posible de su elemento adyacente anterior
Ejemplos:
Entrada: arr[] = {2, 4, 6, 3, 11}
Salida: 1 4 4 6 9
Explicación:
Potencia de 11 que es la más cercana a 2 —> 11 0 = 1
Potencia de 2 que es la más cercana a 4 —> 2 2 = 4
Potencia de 4 que está más cerca de 6 —> 4 1 = 4
Potencia de 6 que está más cerca de 3 —> 6 1 = 6
Potencia de 3 que está más cerca de 11—> 3 2 = 9Entrada: arr[] = {3, 2, 4, 3}
Salida: 3 3 4 4
Explicación:
Potencia de 3 que está más cerca de 3 —> 3 1 = 3
Potencia de 3 que está más cerca de 2 —> 3 1 = 3
Potencia de 2 que está más cerca de 4 —> 2 2 = 4
Potencia de 4 que está más cerca de 3 —> 4 1 = 4
Enfoque: La idea para resolver este problema es atravesar el arreglo y para cada elemento del arreglo arr[i], encontrar la potencia del elemento anterior, digamos X, que es el más cercano a arr[i] , es decir, X K que es el más cercano a arr[yo] . Sigue los pasos:
- Calcule el valor de K , que es igual al valor mínimo de log x (Y) .
- Por lo tanto, K y (K + 1) serán los dos números enteros para los cuales la potencia podría ser más cercana.
- Calcula X K y X (K + 1) y comprueba cuál está más cerca de Y . Luego, imprime ese valor.
A continuación se muestra la implementación del enfoque anterior:
C++
// CPP program for the above approach #include <iostream> #include <cmath> using namespace std; // Function to calculate log x for given base int LOG(int a, int b) { return log(a) / log(b); } // Function to replace all array // elements with the nearest power // of previous adjacent nelement void repbyNP(int *arr,int n) { // For the first element, set the last // array element to its previous element int x = arr[n - 1]; // Traverse the array for(int i = 0; i < n; i++) { // Find K for which x ^ k is // nearest to arr[i] int k = LOG(arr[i], x); int temp = arr[i]; // Find the power to x nearest to arr[i] if (abs(pow(x,k) - arr[i]) < abs(pow(x,k+1) - arr[i])) arr[i] = pow(x, k); else arr[i] = pow(x, k + 1); // Update x x = temp; } } int main() { // Driver Code int arr[5] = {2, 4, 6, 3, 11}; int n = sizeof(arr)/sizeof(arr[0]); // Function Call repbyNP(arr,n); // Display the array for(int i = 0; i < n; i++) cout<<arr[i]<<" "; return 0; } // This code is contributed by rohitsingh07052.
Java
// Java program for the above approach import java.util.*; class GFG { // Function to calculate log x for given base static int LOG(int a, int b) { return (int)(Math.log(a) / Math.log(b)); } // Function to replace all array // elements with the nearest power // of previous adjacent nelement static void repbyNP(int[] arr,int n) { // For the first element, set the last // array element to its previous element int x = arr[n - 1]; // Traverse the array for(int i = 0; i < n; i++) { // Find K for which x ^ k is // nearest to arr[i] int k = LOG(arr[i], x); int temp = arr[i]; // Find the power to x nearest to arr[i] if (Math.abs(Math.pow(x,k) - arr[i]) < Math.abs(Math.pow(x,k+1) - arr[i])) arr[i] = (int)Math.pow(x, k); else arr[i] = (int)Math.pow(x, k + 1); // Update x x = temp; } } // Driver Code public static void main(String[] args) { int arr[] = {2, 4, 6, 3, 11}; int n = arr.length; // Function Call repbyNP(arr,n); // Display the array for(int i = 0; i < n; i++) System.out.print(arr[i] + " "); } } // This code is contributed by sanjoy_62.
Python3
# Python3 program for the above approach import math # Function to calculate log x for given base def LOG(x, base): return int(math.log(x)/math.log(base)) # Function to replace all array # elements with the nearest power # of previous adjacent nelement def repbyNP(arr): # For the first element, set the last # array element to its previous element x = arr[-1] # Traverse the array for i in range(len(arr)): # Find K for which x ^ k is # nearest to arr[i] k = LOG(arr[i], x) temp = arr[i] # Find the power to x nearest to arr[i] if abs(x**k - arr[i]) < abs(x**(k + 1) - arr[i]): arr[i] = x**k else: arr[i] = x**(k + 1) # Update x x = temp # Return the array return arr # Driver Code arr = [2, 4, 6, 3, 11] # Function Call print(repbyNP(arr))
C#
// C# program for the above approach using System; class GFG{ // Function to calculate log x for given base static int LOG(int a, int b) { return (int)(Math.Log(a) / Math.Log(b)); } // Function to replace all array // elements with the nearest power // of previous adjacent nelement static void repbyNP(int[] arr,int n) { // For the first element, set the last // array element to its previous element int x = arr[n - 1]; // Traverse the array for(int i = 0; i < n; i++) { // Find K for which x ^ k is // nearest to arr[i] int k = LOG(arr[i], x); int temp = arr[i]; // Find the power to x nearest to arr[i] if (Math.Abs(Math.Pow(x, k) - arr[i]) < Math.Abs(Math.Pow(x, k + 1) - arr[i])) arr[i] = (int)Math.Pow(x, k); else arr[i] = (int)Math.Pow(x, k + 1); // Update x x = temp; } } // Driver Code public static void Main(string[] args) { int[] arr = {2, 4, 6, 3, 11}; int n = arr.Length; // Function Call repbyNP(arr,n); // Display the array for(int i = 0; i < n; i++) Console.Write(arr[i] + " "); } } // This code is contributed by code_hunt.
Javascript
<script> // Javascript program for the above approach // Function to calculate log x for given base function LOG(a, b) { return parseInt(Math.log(a) / Math.log(b)); } // Function to replace all array // elements with the nearest power // of previous adjacent nelement function repbyNP(arr, n) { // For the first element, set the last // array element to its previous element let x = arr[n - 1]; // Traverse the array for(let i = 0; i < n; i++) { // Find K for which x ^ k is // nearest to arr[i] let k = LOG(arr[i], x); let temp = arr[i]; // Find the power to x nearest to arr[i] if (Math.abs(Math.pow(x, k) - arr[i]) < Math.abs(Math.pow(x, k + 1) - arr[i])) arr[i] = Math.pow(x, k); else arr[i] = Math.pow(x, k + 1); // Update x x = temp; } } // Driver Code let arr = [2, 4, 6, 3, 11]; let n = arr.length; // Function Call repbyNP(arr, n); // Display the array for(let i = 0; i < n; i++) document.write(arr[i] + " "); // This code is contributed by rishavmahato348. </script>
[1, 4, 4, 1, 9]
Complejidad temporal: O(N)
Espacio auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por rohitsingh07052 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA