# Count of K length subsequence whose product is even

• Difficulty Level : Medium
• Last Updated : 05 May, 2021

Given an array arr[] and an integer K, the task is to find number of non empty subsequence of length K from the given array arr of size N such that the product of subsequence is a even number.
Example:

Input: arr[] = [2, 3, 1, 7], K = 3
Output:
Explanation:
There are 3 subsequences of length 3 whose product is even number {2, 3, 1}, {2, 3, 7}, {2, 1, 7}.
Input: arr[] = [2, 4], K = 1
Output:
Explanation:
There are 2 subsequence of length 1 whose product is even number {2} {4}.

Approach:
To solve the problem mentioned above we have to find the total number of subsequence of length K and subtract the count of K length subsequence whose product is odd.

1. For making a product of the subsequence odd we must choose K numbers as odd.
2. So the number of subsequences of length K whose product is odd is possibly finding k odd numbers, i.e., “o choose k” or
where o is the count of odd numbers in the subsequence.

3. where n and o is the count of total numbers and odd numbers respectively.

Below is the implementation of above program:

## C++

 // C++ implementation to Count of K // length subsequence whose // Product is even   #include  using namespace std;   int fact(int n);   // Function to calculate nCr int nCr(int n, int r) {     if (r > n)         return 0;     return fact(n)            / (fact(r)               * fact(n - r)); }   // Returns factorial of n int fact(int n) {     int res = 1;     for (int i = 2; i <= n; i++)         res = res * i;     return res; }   // Function for finding number // of K length subsequences // whose product is even number int countSubsequences(     int arr[], int n, int k) {     int countOdd = 0;       // counting odd numbers in the array     for (int i = 0; i < n; i++) {         if (arr[i] & 1)             countOdd++;     }     int ans = nCr(n, k)               - nCr(countOdd, k);       return ans; }   // Driver code int main() {       int arr[] = { 2, 4 };     int K = 1;       int N = sizeof(arr) / sizeof(arr[0]);       cout << countSubsequences(arr, N, K);       return 0; }

## Java

 // Java implementation to count of K // length subsequence whose product  // is even import java.util.*;   class GFG{       // Function to calculate nCr static int nCr(int n, int r) {     if (r > n)         return 0;     return fact(n) / (fact(r) *                       fact(n - r)); }   // Returns factorial of n static int fact(int n) {     int res = 1;     for(int i = 2; i <= n; i++)         res = res * i;               return res; }   // Function for finding number // of K length subsequences // whose product is even number static int countSubsequences(int arr[],                              int n, int k) {     int countOdd = 0;       // Counting odd numbers in the array     for(int i = 0; i < n; i++)     {         if (arr[i] % 2 == 1)             countOdd++;     }     int ans = nCr(n, k) - nCr(countOdd, k);       return ans; }   // Driver code public static void main(String args[]) {     int arr[] = { 2, 4 };     int K = 1;       int N = arr.length;       System.out.println(countSubsequences(arr, N, K)); } }   // This code is contributed by ANKITKUMAR34

## Python3

 # Python3 implementation to Count of K # length subsequence whose # Product is even   # Function to calculate nCr def nCr(n, r):           if (r > n):         return 0     return fact(n) // (fact(r) *                        fact(n - r))   # Returns factorial of n def fact(n):           res = 1     for i in range(2, n + 1):         res = res * i               return res   # Function for finding number # of K length subsequences # whose product is even number def countSubsequences(arr, n, k):           countOdd = 0       # Counting odd numbers in the array     for i in range(n):         if (arr[i] & 1):             countOdd += 1;       ans = nCr(n, k) - nCr(countOdd, k);       return ans       # Driver code arr = [ 2, 4 ] K = 1   N = len(arr)   print(countSubsequences(arr, N, K))   # This code is contributed by ANKITKUAR34

## C#

 // C# implementation to count of K // length subsequence whose product  // is even using System;   class GFG{       // Function to calculate nCr static int nCr(int n, int r) {     if (r > n)         return 0;               return fact(n) / (fact(r) *                       fact(n - r)); }   // Returns factorial of n static int fact(int n) {     int res = 1;     for(int i = 2; i <= n; i++)         res = res * i;               return res; }   // Function for finding number // of K length subsequences // whose product is even number static int countSubsequences(int []arr,                              int n, int k) {     int countOdd = 0;       // Counting odd numbers in the array     for(int i = 0; i < n; i++)     {         if (arr[i] % 2 == 1)             countOdd++;     }     int ans = nCr(n, k) - nCr(countOdd, k);       return ans; }   // Driver code public static void Main(String []args) {     int []arr = { 2, 4 };     int K = 1;       int N = arr.Length;       Console.WriteLine(countSubsequences(arr, N, K)); } }   // This code is contributed by Princi Singh

## Javascript

 

Output:

2

My Personal Notes arrow_drop_up
Recommended Articles
Page :