Open In App

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

Last Updated : 09 Sep, 2022
Comments
Improve
Suggest changes
Like Article
Like
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

Practice Tags :

Similar Reads