Product of values of all possible non-empty subsets of given Array
Last Updated :
13 Mar, 2022
Given an array of size N. The task is to find the product of values of all possible non-empty subsets of the given array.
Examples:
Input: N = 2, arr[] = {3, 7}
Output: 441
All non empty subsets are:
3
7
3, 7
Product = 3 * 7 * 3 * 7 = 441
Input: N = 1, arr[] = {4}
Output: 4
Approach: On careful observation it can be deduced that number of occurrences of every element across all subsets is 2N-1. Therefore, in the final product, every element of the array will be multiplied to itself by 2N-1 times.
Product = a[0]2N-1*a[1]2N-1********a[N-1]2N-1
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
int product( int a[], int n)
{
int ans = 1;
int val = pow (2, n - 1);
for ( int i = 0; i < n; i++) {
ans *= pow (a[i], val);
}
return ans;
}
int main()
{
int n = 2;
int a[] = { 3, 7 };
cout << product(a, n);
return 0;
}
|
Java
class GFG
{
static int product( int a[], int n)
{
int ans = 1 ;
int val = ( int )Math.pow( 2 , n - 1 );
for ( int i = 0 ; i < n; i++)
{
ans *= ( int )Math.pow(a[i], val);
}
return ans;
}
public static void main (String[] args)
{
int n = 2 ;
int a[] = { 3 , 7 };
System.out.println(product(a, n));
}
}
|
Python3
def product(a, n):
ans = 1
val = pow ( 2 , n - 1 )
for i in range (n):
ans * = pow (a[i], val)
return ans
n = 2
a = [ 3 , 7 ]
print (product(a, n))
|
C#
using System;
class GFG
{
static int product( int []a, int n)
{
int ans = 1;
int val = ( int )Math.Pow(2, n - 1);
for ( int i = 0; i < n; i++)
{
ans *= ( int )Math.Pow(a[i], val);
}
return ans;
}
public static void Main ()
{
int n = 2;
int []a = { 3, 7 };
Console.WriteLine(product(a, n));
}
}
|
Javascript
<script>
function product(a, n)
{
var ans = 1;
var val = Math.pow(2, n - 1);
for ( var i = 0; i < n; i++) {
ans *= Math.pow(a[i], val);
}
return ans;
}
var n = 2;
a = [ 3, 7 ]
document.write(product(a, n));
</script>
|
Time Complexity: O(N)
Auxiliary Space: O(1)
Share your thoughts in the comments
Please Login to comment...