Open In App

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

Last Updated : 09 Sep, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

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

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 <iostream>
#include<bits/stdc++.h>
 
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[0]) ;
    
   // 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




<?php
// PHP implementation of above approach
  
// Function to find total number of subsets
// in which product of the elements is even
function find(&$a, $n)
{
    $count_odd = 0;
      
    for($i = 0; $i < $n ; $i++)
    {
        // counting number of odds elements
        if ($i % 2 != 0)
        $count_odd += 1;
    }
  
    $result = pow(2, $n) - 1 ;
    $result -= (pow(2, $count_odd) - 1) ;
    echo $result ."\n";
      
}
  
// Driver code
 
$a = array(2, 2, 3) ;
$n = sizeof($a)/sizeof($a[0]) ;
 
// function calling
find($a,$n);
 
return 0;
 
?>


Javascript




<script>
 
// Javascript implementation of above approach
 
// Function to find total number of subsets
// in which product of the elements is even
function find(a, n)
{
    var count_odd = 0;
     
    for(var i = 0; i < n ; i++)
    {
        // counting number of odds elements
        if (i % 2 != 0)
            count_odd += 1;
    }
 
    var result = Math.pow(2, n) - 1 ;
    result -= (Math.pow(2, count_odd) - 1) ;
    document.write( result );
     
}
 
// Driver code
var a = [2, 2, 3];
var n = a.length;
 
// function calling
find(a,n);
 
</script>


Output

6


Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads