Skip to content
Related Articles
Open in App
Not now

Related Articles

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

Improve Article
Save Article
Like Article
  • Last Updated : 09 Sep, 2022
Improve Article
Save Article
Like Article

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

My Personal Notes arrow_drop_up
Like Article
Save Article
Related Articles

Start Your Coding Journey Now!