 Open in App
Not now

# Number of ways to select exactly K even numbers from given Array

• Last Updated : 12 Sep, 2021

Given an array arr[] of n integers and an integer K, the task is to find the number of ways to select exactly K even numbers from the given array.

Examples:

Input: arr[] = {1, 2, 3, 4} k = 1
Output:
Explanation:
The number of ways in which we can select one even number is 2.

Input: arr[] = {61, 65, 99, 26, 57, 68, 23, 2, 32, 30}  k = 2
Output:10
Explanation:
The number of ways in which we can select 2 even number is 10.

Approach:  The idea is to apply the rule of combinatorics. For choosing r objects from the given n objects, the total number of ways of choosing is given by nCr. Below are the steps:

1. Count the total number of even elements from the given array(say cnt).
2. Check if the value of K is greater than cnt then the number of ways will be equal to 0.
3. Otherwise, the answer will be nCk.

Below is the implementation of the above approach:

## C++

 `// C++ program for the above approach``#include ``using` `namespace` `std;``long` `long` `f;` `// Function for calculating factorial``void` `fact()``{``    ``// Factorial of n defined as:``    ``// n! = n * (n - 1) * ... * 1``    ``f = f = 1;` `    ``for` `(``int` `i = 2; i <= 10; i++)``        ``f[i] = i * 1LL * f[i - 1];``}` `// Function to find the number of ways to``// select exactly K even numbers``// from the given array``void` `solve(``int` `arr[], ``int` `n, ``int` `k)``{``    ``fact();` `    ``// Count even numbers``    ``int` `even = 0;``    ``for` `(``int` `i = 0; i < n; i++) {` `        ``// Check if the current``        ``// number is even``        ``if` `(arr[i] % 2 == 0)``            ``even++;``    ``}` `    ``// Check if the even numbers to be``    ``// chosen is greater than n. Then,``    ``// there is no way to pick it.``    ``if` `(k > even)``        ``cout << 0 << endl;` `    ``else` `{``        ``// The number of ways will be nCk``        ``cout << f[even] / (f[k] * f[even - k]);``    ``}``}` `// Driver Code``int` `main()``{``    ``// Given array arr[]``    ``int` `arr[] = { 1, 2, 3, 4 };``    ``int` `n = ``sizeof` `arr / ``sizeof` `arr;` `    ``// Given count of even elements``    ``int` `k = 1;` `    ``// Function Call``    ``solve(arr, n, k);``    ``return` `0;``}`

## Java

 `// Java program for the above approach``class` `GFG{``    ` `static` `int` `[]f = ``new` `int``[``12``];` `// Function for calculating factorial``static` `void` `fact()``{``    ` `    ``// Factorial of n defined as:``    ``// n! = n * (n - 1) * ... * 1``    ``f[``0``] = f[``1``] = ``1``;` `    ``for``(``int` `i = ``2``; i <= ``10``; i++)``        ``f[i] = i * ``1` `* f[i - ``1``];``}` `// Function to find the number of ways to``// select exactly K even numbers``// from the given array``static` `void` `solve(``int` `arr[], ``int` `n, ``int` `k)``{``    ``fact();` `    ``// Count even numbers``    ``int` `even = ``0``;``    ``for``(``int` `i = ``0``; i < n; i++)``    ``{``        ` `        ``// Check if the current``        ``// number is even``        ``if` `(arr[i] % ``2` `== ``0``)``            ``even++;``    ``}` `    ``// Check if the even numbers to be``    ``// chosen is greater than n. Then,``    ``// there is no way to pick it.``    ``if` `(k > even)``        ``System.out.print(``0` `+ ``"\n"``);` `    ``else``    ``{``        ``// The number of ways will be nCk``        ``System.out.print(f[even] /``                        ``(f[k] * f[even - k]));``    ``}``}` `// Driver Code``public` `static` `void` `main(String[] args)``{``    ` `    ``// Given array arr[]``    ``int` `arr[] = { ``1``, ``2``, ``3``, ``4` `};``    ``int` `n = arr.length;` `    ``// Given count of even elements``    ``int` `k = ``1``;` `    ``// Function call``    ``solve(arr, n, k);``}``}` `// This code is contributed by Rajput-Ji`

## Python3

 `# Python3 program for the above approach``f ``=` `[``0``] ``*` `12` `# Function for calculating factorial``def` `fact():``    ` `    ``# Factorial of n defined as:``    ``# n! = n * (n - 1) * ... * 1``    ``f[``0``] ``=` `f[``1``] ``=` `1` `    ``for` `i ``in` `range``(``2``, ``11``):``        ``f[i] ``=` `i ``*` `1` `*` `f[i ``-` `1``]` `# Function to find the number of ways to``# select exactly K even numbers``# from the given array``def` `solve(arr, n, k):``    ` `    ``fact()` `    ``# Count even numbers``    ``even ``=` `0``    ``for` `i ``in` `range``(n):` `        ``# Check if the current``        ``# number is even``        ``if` `(arr[i] ``%` `2` `=``=` `0``):``            ``even ``+``=` `1``    ` `    ``# Check if the even numbers to be``    ``# chosen is greater than n. Then,``    ``# there is no way to pick it.``    ``if` `(k > even):``        ``print``(``0``)``    ``else``:``        ` `        ``# The number of ways will be nCk``        ``print``(f[even] ``/``/` `(f[k] ``*` `f[even ``-` `k]))``    ` `# Driver Code` `# Given array arr[]``arr ``=` `[ ``1``, ``2``, ``3``, ``4` `]` `n ``=` `len``(arr)` `# Given count of even elements``k ``=` `1` `# Function call``solve(arr, n, k)` `# This code is contributed by code_hunt`

## C#

 `// C# program for the above approach``using` `System;``class` `GFG{``    ` `static` `int` `[]f = ``new` `int``;` `// Function for calculating factorial``static` `void` `fact()``{``    ` `    ``// Factorial of n defined as:``    ``// n! = n * (n - 1) * ... * 1``    ``f = f = 1;` `    ``for``(``int` `i = 2; i <= 10; i++)``        ``f[i] = i * 1 * f[i - 1];``}` `// Function to find the number of ways to``// select exactly K even numbers``// from the given array``static` `void` `solve(``int` `[]arr, ``int` `n, ``int` `k)``{``    ``fact();` `    ``// Count even numbers``    ``int` `even = 0;``    ``for``(``int` `i = 0; i < n; i++)``    ``{``        ` `        ``// Check if the current``        ``// number is even``        ``if` `(arr[i] % 2 == 0)``            ``even++;``    ``}` `    ``// Check if the even numbers to be``    ``// chosen is greater than n. Then,``    ``// there is no way to pick it.``    ``if` `(k > even)``        ``Console.Write(0 + ``"\n"``);` `    ``else``    ``{``        ``// The number of ways will be nCk``        ``Console.Write(f[even] /``                        ``(f[k] * f[even - k]));``    ``}``}` `// Driver Code``public` `static` `void` `Main(String[] args)``{``    ` `    ``// Given array []arr``    ``int` `[]arr = { 1, 2, 3, 4 };``    ``int` `n = arr.Length;` `    ``// Given count of even elements``    ``int` `k = 1;` `    ``// Function call``    ``solve(arr, n, k);``}``}` `// This code is contributed by sapnasingh4991`

## Javascript

 ``

Output:

`2`

Time Complexity: O(N)
Auxiliary Space: O(N)

My Personal Notes arrow_drop_up