Prefix Product Array
Last Updated :
26 Mar, 2021
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++
#include <bits/stdc++.h>
using namespace std;
int prefixProduct( int a[],
int n)
{
for ( int i = 1; i < n; i++) {
a[i] = a[i] * a[i - 1];
}
for ( int j = 0; j < n; j++) {
cout << a[j] << ", " ;
}
return 0;
}
int main()
{
int arr[] = { 2, 4, 6, 5, 10 };
int N = sizeof (arr) / sizeof (arr[0]);
prefixProduct(arr, N);
return 0;
}
|
Java
class GFG{
static int prefixProduct( int []a, int n)
{
for ( int i = 1 ; i < n; i++)
{
a[i] = a[i] * a[i - 1 ];
}
for ( int j = 0 ; j < n; j++)
{
System.out.print(a[j] + ", " );
}
return 0 ;
}
public static void main (String[] args)
{
int arr[] = new int []{ 2 , 4 , 6 , 5 , 10 };
int N = 5 ;
prefixProduct(arr, N);
}
}
|
Python3
def prefixProduct(a, n):
for i in range ( 1 , n):
a[i] = a[i] * a[i - 1 ];
for j in range ( 0 , n):
print (a[j], end = ", " );
return 0 ;
arr = [ 2 , 4 , 6 , 5 , 10 ];
N = len (arr);
prefixProduct(arr, N);
|
C#
using System;
class GFG{
static int prefixProduct( int []a, int n)
{
for ( int i = 1; i < n; i++)
{
a[i] = a[i] * a[i - 1];
}
for ( int j = 0; j < n; j++)
{
Console.Write(a[j] + ", " );
}
return 0;
}
public static void Main ( string [] args)
{
int []arr = new int []{ 2, 4, 6, 5, 10 };
int N = 5;
prefixProduct(arr, N);
}
}
|
Javascript
<script>
function prefixProduct(a, n)
{
for (let i = 1; i < n; i++) {
a[i] = a[i] * a[i - 1];
}
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>
|
Output:
2, 8, 48, 240, 2400
Time Complexity: O(N)
Auxiliary Space: O(1)
Share your thoughts in the comments
Please Login to comment...