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

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: 3
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

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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++ implementataion 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 implementataion 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 implementataion 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# implementataion 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 `

Output:

```150
```

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.