Total number of subsets in which the product of the elements is even

• Last Updated : 25 May, 2021

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

Examples:

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

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

• 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 evenvoid 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 codeint 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 approachimport math as ma # Function to find total number of subsets# in which product of the elements is evendef 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 codea =[2, 2, 3]find(a)

C#

 // C# implementation of above approachusing 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



Javascript


Output:
6

My Personal Notes arrow_drop_up