Given an array arr[] of N integers the task is to generate a prefix product array from the given array.
In a prefix product array, ith term pref[i] = arr[i] * arr[i – 1] * …… * arr[0]
Examples:
Input: {1, 2, 3, 4, 5}
Output: {1, 2, 6, 24, 120}
Explanation:
The Prefix Product Array will be {1, 2*1, 3*2*1, 4*3*2*1, 5*4*3*2*1} = {1, 2, 6, 24, 120}
Input: {2, 4, 6, 5, 10}
Output: {2, 8, 48, 240, 2400}
Approach:
Follow the steps below to solve the problem:
- Iterate over the given array from indices 1 to N – 1.
- Calculate arr[i] = arr[i] * arr[i-1] for every ith index.
- Finally, print the prefix product array.
Below is the implementation of the above approach.
C++
// C++ Program to generate// Prefix Product Array#include <bits/stdc++.h>using namespace std;// Function to generate// prefix product arrayint 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 Codeint 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 Arrayclass GFG{// Function to generate// prefix product arraystatic 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 Codepublic 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 arraydef 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 Codearr = [ 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 Arrayusing System;class GFG{// Function to generate// prefix product arraystatic 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 Codepublic 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> |
2, 8, 48, 240, 2400
Time Complexity: O(N)
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!
