Related Articles
Total number of subsets in which the product of the elements is even
• Last Updated : 24 Dec, 2018

Given an array arr[] of integer elements, the task is to find the total number of sub-sets of arr[] in which product of the elements is even.

Examples:

Input: arr[] = {2, 2, 3}
Output: 6
All possible sub-sets are {2}, {2}, {2, 2}, {2, 3}, {2, 3} and {2, 2, 3}

Input: arr[] = {3, 3, 3}
Output: 0

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: We already know that :

• Even * Even = Even
• Odd * Even = Even
• Odd * Odd = Odd

Now, we need to count the total subsets in which at least a single even element is present in order for the product of the elements to be even.
Now, Total number of sub-sets having at least one even element = Total possible sub-sets of n – Total sub-sets having all odd elements
i.e. (2n – 1) – (2totalOdd – 1)

Below is the implementation of the above approach:

## C++

 `// C++ implementation of above approach`` ` `#include ``#include`` ` `using` `namespace` `std;`` ` `// Function to find total number of subsets ``// in which product of the elements is even``void` `find(``int` `a[], ``int` `n)``{``    ``int` `count_odd = 0;``     ` `    ``for``(``int` `i = 0; i < n ; i++)``    ``{``        ``// counting number of odds elements``        ``if` `(i % 2 != 0)``        ``count_odd += 1;``    ``}`` ` `    ``int` `result = ``pow``(2, n) - 1 ;``    ``result -= (``pow``(2, count_odd) - 1) ;``    ``cout << result << endl;``     ` `}`` ` `// Driver code``int` `main()``{``   ``int` `a[] = {2, 2, 3} ;``   ``int` `n = ``sizeof``(a)/``sizeof``(a) ;``    ` `   ``// function calling``   ``find(a,n);``    ` `   ``return` `0;``   ``// This code is contributed by ANKITRAI1;``}`

## Java

 `// Java implementation of above approach `` ` `class` `GFG {`` ` `// Function to find total number of subsets ``// in which product of the elements is even ``    ``static` `void` `find(``int` `a[], ``int` `n) {``        ``int` `count_odd = ``0``;`` ` `        ``for` `(``int` `i = ``0``; i < n; i++) {``            ``// counting number of odds elements ``            ``if` `(i % ``2` `!= ``0``) {``                ``count_odd += ``1``;``            ``}``        ``}`` ` `        ``int` `result = (``int``) (Math.pow(``2``, n) - ``1``);``        ``result -= (Math.pow(``2``, count_odd) - ``1``);``        ``System.out.println(result);`` ` `    ``}`` ` `// Driver code ``    ``public` `static` `void` `main(String[] args) {``        ``int` `a[] = {``2``, ``2``, ``3``};``        ``int` `n = a.length;`` ` `// function calling ``        ``find(a, n);`` ` `    ``}``}``//this code contributed by 29AJayKumar`

## Python3

 `# Python3 implementation of above approach``import` `math as ma`` ` `# Function to find total number of subsets ``# in which product of the elements is even``def` `find(a):``    ``count_odd ``=` `0``    ``for` `i ``in` `a:`` ` `        ``# counting number of odds elements``        ``if``(i ``%` `2` `!``=` `0``):``            ``count_odd``+``=` `1`` ` `    ``result ``=` `pow``(``2``, ``len``(a)) ``-` `1``    ``result ``=` `result ``-` `(``pow``(``2``, count_odd) ``-` `1``)``    ``print``(result)`` ` `# Driver code``a ``=``[``2``, ``2``, ``3``]``find(a)`

## C#

 `     ` `// C# implementation of above approach ``using` `System;``public` `class` `GFG {``  ` `// Function to find total number of subsets ``// in which product of the elements is even ``    ``static` `void` `find(``int` `[]a, ``int` `n) {``        ``int` `count_odd = 0;``  ` `        ``for` `(``int` `i = 0; i < n; i++) {``            ``// counting number of odds elements ``            ``if` `(i % 2 != 0) {``                ``count_odd += 1;``            ``}``        ``}``  ` `        ``int` `result = (``int``) (Math.Pow(2, n) - 1);``        ``result -= (``int``)(Math.Pow(2, count_odd) - 1);``        ``Console.Write(result);``  ` `    ``}``  ` `// Driver code ``    ``public` `static` `void` `Main() {``        ``int` `[]a = {2, 2, 3};``        ``int` `n = a.Length;``  ` `// function calling ``        ``find(a, n);``  ` `    ``}``}``//this code contributed by 29AJayKumar`

## PHP

 ``
Output:
```6
```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up