Product of all Subarrays of an Array

Given an array of integers arr of size N, the task is to print products of all subarrays of the array.

Examples:

Input: arr[] = {2, 4}
Output: 64
Here, subarrays are [2], [2, 4], [4]
Prodcuts are 2, 8, 4
Product of all Subarrays = 64



Input : arr[] = {10, 3, 7}
Output : 30870
Here, subarrays are [10], [10, 3], [10, 3, 7], [3], [3, 7], [7]
Prodcuts are 10, 30, 210, 3, 21, 7
Product of all Subarrays = 27783000

Naive Approach: A simple solution is to generate all sub-array and compute their product.

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to find product
// of all subarray of an array
  
#include <bits/stdc++.h>
using namespace std;
  
// Function to find product of all subarrays
void product_subarrays(int arr[], int n)
{
    // Variable to store the product
    int product = 1;
  
    // Compute the product while
    // traversing for subarrays
    for (int i = 0; i < n; i++) {
        for (int j = i; j < n; j++) {
            for (int k = i; k <= j; k++)
                product *= arr[j];
        }
    }
  
    // Printing product of all subarray
    cout << product << "\n";
}
  
// Driver code
int main()
{
    int arr[] = { 10, 3, 7 };
  
    int n = sizeof(arr) / sizeof(arr[0]);
  
    // Function call
    product_subarrays(arr, n);
  
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to find product
// of all subarray of an array
import java.util.*;
  
class GFG {
  
// Function to find product of all subarrays
static void product_subarrays(int arr[], int n)
{
      
    // Variable to store the product
    int product = 1;
  
    // Compute the product while
    // traversing for subarrays
    for(int i = 0; i < n; i++)
    {
       for(int j = i; j < n; j++)
       {
          for(int k = i; k <= j; k++)
             product *= arr[j];
       }
    }
  
    // Printing product of all subarray
    System.out.print(product + "\n");
}
  
// Driver code
public static void main(String args[])
{
    int arr[] = { 10, 3, 7 };
    int n = arr.length;
  
    // Function call
    product_subarrays(arr, n);
}
}
  
// This code is contributed by shivanisinghss2110

chevron_right


Output:

31765230

Efficient Approach: An efficient approach is to use two loops and calculate the products while traversing for the subarrays.

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to find product
// of all subarray of an array
  
#include <bits/stdc++.h>
using namespace std;
  
// Function to find product of all subarrays
void product_subarrays(long long int arr[], int n)
{
    // Variable to store the product
    long long int res = 1;
  
    // Compute the product while
    // traversing for subarrays
    for (int i = 0; i < n; i++) {
        long long int product = 1;
        for (int j = i; j < n; j++) {
            product = product * arr[j];
            res *= product;
        }
    }
    // Printing product of all subarray
    cout << res << "\n";
}
  
// Driver code
int main()
{
    long long int arr[] = { 10, 3, 7 };
  
    int n = sizeof(arr) / sizeof(arr[0]);
  
    // Function call
    product_subarrays(arr, n);
  
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to find product
// of all subarray of an array
import java.util.*;
  
class GFG {
  
    // Function to find product of all subarrays
    static void product_subarrays(int arr[], int n)
    {
        // Variable to store the product
        int res = 1;
  
        // Compute the product while
        // traversing for subarrays
        for (int i = 0; i < n; i++) {
            int product = 1;
            for (int j = i; j < n; j++) {
                product = product * arr[j];
                res *= product;
            }
        }
  
        // Printing product of all subarray
        System.out.println(res + "\n");
    }
  
    // Driver code
    public static void main(String args[])
    {
        int arr[] = { 10, 3, 7 };
  
        int n = arr.length;
  
        // Function call
        product_subarrays(arr, n);
    }
}
  
// This code is contributed by AbhiThakur

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program to find product
# of all subarray of an array
  
# Function to find product of all subarrays
def product_subarrays(arr, n):
  
    # Variable to store the product
    res = 1;
  
    # Compute the product while
    # traversing for subarrays
    for i in range(n):
        product = 1
        for j in range(i, n):
            product *= arr[j];
            res = res * product
  
    # Printing product of all subarray
    print(res);
  
# Driver code
if __name__ == '__main__':
    arr = [ 10, 3, 7 ];
  
    n = len(arr);
  
    # Function call
    product_subarrays(arr, n);
  
# This code is contributed by Princi Singh

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to find product
// of all subarray of an array
using System;
  
class GFG {
  
    // Function to find product of all subarrays
    static void product_subarrays(int[] arr, int n)
    {
        // Variable to store the product
        int res = 1;
  
        // Compute the product while
        // traversing for subarrays
        for (int i = 0; i < n; i++) {
            int product = 1;
            for (int j = i; j < n; j++) {
                product *= arr[j];
                res = res * product;
            }
        }
  
        // Printing product of all subarray
        Console.WriteLine(res + "\n");
    }
  
    // Driver code
    public static void Main(String[] args)
    {
        int[] arr = { 10, 3, 7 };
  
        int n = arr.Length;
  
        // Function call
        product_subarrays(arr, n);
    }
}
  
// This code is contributed by 29AjayKumar

chevron_right


Output:

30870

GeeksforGeeks has prepared a complete interview preparation course with premium videos, theory, practice problems, TA support and many more features. Please refer Placement 100 for details




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.