Dada una array arr[] de N enteros, la tarea es generar una array de productos de prefijos a partir de la array dada.
En una array de productos de prefijos, i -ésimo término pref[i] = arr[i] * arr[i – 1] * …… * arr[0]
Ejemplos:
Entrada: {1, 2, 3, 4, 5}
Salida: {1, 2, 6, 24, 120}
Explicación:
la array de productos de prefijo será {1, 2*1, 3*2*1, 4*3 *2*1, 5*4*3*2*1} = {1, 2, 6, 24, 120}
Entrada: {2, 4, 6, 5, 10}
Salida: {2, 8, 48, 240 , 2400}
Enfoque:
siga los pasos a continuación para resolver el problema:
- Iterar sobre la array dada desde los índices 1 a N – 1 .
- Calcular arr[i] = arr[i] * arr[i-1] para cada i -ésimo índice.
- Finalmente, imprima la array de productos de prefijos.
A continuación se muestra la implementación del enfoque anterior.
C++
// C++ Program to generate // Prefix Product Array #include <bits/stdc++.h> using namespace std; // Function to generate // prefix product array int prefixProduct(int a[], int n) { // Update the array // with the product of // prefixes for (int i = 1; i < n; i++) { a[i] = a[i] * a[i - 1]; } // Print the array for (int j = 0; j < n; j++) { cout << a[j] << ", "; } return 0; } // Driver Code int main() { int arr[] = { 2, 4, 6, 5, 10 }; int N = sizeof(arr) / sizeof(arr[0]); prefixProduct(arr, N); return 0; }
Java
// Java program to generate // Prefix Product Array class GFG{ // Function to generate // prefix product array static int prefixProduct(int []a, int n) { // Update the array // with the product of // prefixes for(int i = 1; i < n; i++) { a[i] = a[i] * a[i - 1]; } // Print the array for(int j = 0; j < n; j++) { System.out.print(a[j] + ", "); } return 0; } // Driver Code public static void main (String[] args) { int arr[] = new int[]{ 2, 4, 6, 5, 10 }; int N = 5; prefixProduct(arr, N); } } // This code is contributed by Ritik Bansal
Python3
# Python3 Program to generate # Prefix Product Array # Function to generate # prefix product array def prefixProduct(a, n): # Update the array # with the product of # prefixes for i in range(1, n): a[i] = a[i] * a[i - 1]; # Print the array for j in range(0, n): print(a[j], end = ", "); return 0; # Driver Code arr = [ 2, 4, 6, 5, 10 ]; N = len(arr); prefixProduct(arr, N); # This code is contributed by Code_Mech
C#
// C# program to generate // Prefix Product Array using System; class GFG{ // Function to generate // prefix product array static int prefixProduct(int []a, int n) { // Update the array // with the product of // prefixes for(int i = 1; i < n; i++) { a[i] = a[i] * a[i - 1]; } // Print the array for(int j = 0; j < n; j++) { Console.Write(a[j] + ", "); } return 0; } // Driver Code public static void Main (string[] args) { int []arr = new int[]{ 2, 4, 6, 5, 10 }; int N = 5; prefixProduct(arr, N); } } // This code is contributed by rock_cool
Javascript
<script> // Javascript Program to generate // Prefix Product Array // Function to generate // prefix product array function prefixProduct(a, n) { // Update the array // with the product of // prefixes for (let i = 1; i < n; i++) { a[i] = a[i] * a[i - 1]; } // Print the array for (let j = 0; j < n; j++) { document.write(a[j] + ", "); } return 0; } let arr = [ 2, 4, 6, 5, 10 ]; let N = arr.length; prefixProduct(arr, N); </script>
Producción:
2, 8, 48, 240, 2400
Complejidad temporal: O(N)
Espacio auxiliar: O(1)