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 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> |
Output:
2, 8, 48, 240, 2400
Time Complexity: O(N)
Auxiliary Space: O(1)