# Total ways of choosing X men and Y women from a total of M men and W women

• Last Updated : 31 May, 2022

Given four integers X, Y, M, and W. The task is to find the number of ways to choose X men and Y women from total M men and W women.

Examples:

Input: X = 1, Y = 2, M = 1, W = 3
Output:
Way 1: Choose the only man and 1st and 2nd women.
Way 2: Choose the only man and 2nd and 3rd women.
Way 3: Choose the only man and 1st and 3rd women.

Input: X = 4, Y = 3, M = 6, W = 5
Output: 150

Approach: The total number of ways of choosing X men from a total of M men is MCX and the total number of ways of choosing Y women from W women is WCY. Hence, the total number of combined ways will be MCX * WCY.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach``#include ``using` `namespace` `std;` `// Function to return the``// value of ncr effectively``int` `ncr(``int` `n, ``int` `r)``{` `    ``// Initialize the answer``    ``int` `ans = 1;` `    ``for` `(``int` `i = 1; i <= r; i += 1) {` `        ``// Divide simultaneously by``        ``// i to avoid overflow``        ``ans *= (n - r + i);``        ``ans /= i;``    ``}``    ``return` `ans;``}` `// Function to return the count of required ways``int` `totalWays(``int` `X, ``int` `Y, ``int` `M, ``int` `W)``{``    ``return` `(ncr(M, X) * ncr(W, Y));``}` `int` `main()``{``    ``int` `X = 4, Y = 3, M = 6, W = 5;` `    ``cout << totalWays(X, Y, M, W);` `    ``return` `0;``}`

## Java

 `// JAVA implementation of the approach``import` `java.io.*;` `class` `GFG``{``        ` `    ``// Function to return the``    ``// value of ncr effectively``    ``static` `int` `ncr(``int` `n, ``int` `r)``    ``{``    ` `        ``// Initialize the answer``        ``int` `ans = ``1``;``    ` `        ``for` `(``int` `i = ``1``; i <= r; i += ``1``)``        ``{``    ` `            ``// Divide simultaneously by``            ``// i to avoid overflow``            ``ans *= (n - r + i);``            ``ans /= i;``        ``}``        ``return` `ans;``    ``}``    ` `    ``// Function to return the count of required ways``    ``static` `int` `totalWays(``int` `X, ``int` `Y, ``int` `M, ``int` `W)``    ``{``        ``return` `(ncr(M, X) * ncr(W, Y));``    ``}``    ` `    ``// Driver code``    ``public` `static` `void` `main (String[] args)``    ``{``        ``int` `X = ``4``, Y = ``3``, M = ``6``, W = ``5``;``    ` `        ``System.out.println(totalWays(X, Y, M, W));``    ``}``}` `// This code is contributed by ajit_23`

## Python3

 `# Python3 implementation of the approach` `# Function to return the``# value of ncr effectively``def` `ncr(n, r):``    ``# Initialize the answer``    ``ans ``=` `1` `    ``for` `i ``in` `range``(``1``,r``+``1``):` `        ``# Divide simultaneously by``        ``# i to avoid overflow``        ``ans ``*``=` `(n ``-` `r ``+` `i)``        ``ans ``/``/``=` `i``    ``return` `ans` `# Function to return the count of required ways``def` `totalWays(X, Y, M, W):` `    ``return` `(ncr(M, X) ``*` `ncr(W, Y))` `X ``=` `4``Y ``=` `3``M ``=` `6``W ``=` `5` `print``(totalWays(X, Y, M, W))` `# This code is contributed by mohit kumar 29`

## C#

 `// C# implementation of the approach``using` `System;` `class` `GFG``{``    ` `    ``// Function to return the``    ``// value of ncr effectively``    ``static` `int` `ncr(``int` `n, ``int` `r)``    ``{``    ` `        ``// Initialize the answer``        ``int` `ans = 1;``    ` `        ``for` `(``int` `i = 1; i <= r; i += 1)``        ``{``    ` `            ``// Divide simultaneously by``            ``// i to avoid overflow``            ``ans *= (n - r + i);``            ``ans /= i;``        ``}``        ``return` `ans;``    ``}``    ` `    ``// Function to return the count of required ways``    ``static` `int` `totalWays(``int` `X, ``int` `Y, ``int` `M, ``int` `W)``    ``{``        ``return` `(ncr(M, X) * ncr(W, Y));``    ``}``    ` `    ``// Driver code``    ``static` `public` `void` `Main ()``    ``{``        ``int` `X = 4, Y = 3, M = 6, W = 5;``    ` `        ``Console.WriteLine(totalWays(X, Y, M, W));``    ``}``}` `// This code is contributed by AnkitRai01`

## Javascript

 ``

Output:

`150`

Time Complexity: O(n)

Auxiliary Space: O(1)

My Personal Notes arrow_drop_up