# Total ways of selecting a group of X men from N men with or without including a particular man

Given two integers **X** and **N**. The task is to find the total number of ways of selecting **X** men from a group of **N** men with or without including a particular man.**Examples:**

Input:N = 3 X = 2Output:3

Including a man say M1, the ways can be (M1, M2) and (M1, M3).

Excluding a man say M1, the only way is (M2, M3).

Total ways = 2 + 1 = 3.Input:N = 5 X = 3Output:10

**Approach:** The total number of ways of choosing **X men** from **N men** is ^{N}C_{X}

**Including a particular man:**We can choose**(X – 1) men**from**(N – 1)**in.^{N – 1}C_{X – 1}**Excluding a particular man:**We can choose**X men**from**(N – 1)**in^{N – 1}C_{X}

Below is the implementation of the above approach:

## C++

`// C++ implementation of the approach` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to return the value of nCr` `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 ways` `int` `total_ways(` `int` `N, ` `int` `X)` `{` ` ` `return` `(nCr(N - 1, X - 1) + nCr(N - 1, X));` `}` `// Driver code` `int` `main()` `{` ` ` `int` `N = 5, X = 3;` ` ` `cout << total_ways(N, X);` ` ` `return` `0;` `}` |

## Java

`// Java implementation of the approach` `import` `java.io.*;` `class` `GFG` `{` ` ` `// Function to return the value of nCr` `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 ways` `static` `int` `total_ways(` `int` `N, ` `int` `X)` `{` ` ` `return` `(nCr(N - ` `1` `, X - ` `1` `) + nCr(N - ` `1` `, X));` `}` `// Driver code` `public` `static` `void` `main (String[] args)` `{` ` ` `int` `N = ` `5` `, X = ` `3` `;` ` ` ` ` `System.out.println (total_ways(N, X));` `}` `}` `// This code is contributed by Sachin` |

## Python3

`# Python3 implementation of the approach` `# Function to return the value of nCr` `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 ways` `def` `total_ways(N, X) :` ` ` `return` `(nCr(N ` `-` `1` `, X ` `-` `1` `) ` `+` `nCr(N ` `-` `1` `, X));` `# Driver code` `if` `__name__ ` `=` `=` `"__main__"` `:` ` ` `N ` `=` `5` `; X ` `=` `3` `;` ` ` `print` `(total_ways(N, X));` `# This code is contributed by AnkitRai01` |

## C#

`// C# implementation of the approach` `using` `System;` ` ` `class` `GFG` `{` ` ` `// Function to return the value of nCr` `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 ways` `static` `int` `total_ways(` `int` `N, ` `int` `X)` `{` ` ` `return` `(nCr(N - 1, X - 1) + nCr(N - 1, X));` `}` `// Driver code` `public` `static` `void` `Main (String[] args)` `{` ` ` `int` `N = 5, X = 3;` ` ` ` ` `Console.WriteLine(total_ways(N, X));` `}` `}` ` ` `// This code is contributed by 29AjayKumar` |

## Javascript

`<script>` ` ` `// Javascript implementation of the approach` ` ` ` ` `// Function to return the value of nCr` ` ` `function` `nCr(n, r)` ` ` `{` ` ` ` ` `// Initialize the answer` ` ` `let ans = 1;` ` ` ` ` `for` `(let 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 ways` ` ` ` ` `function` `total_ways(N, X)` ` ` `{` ` ` `return` `(nCr(N - 1, X - 1) + nCr(N - 1, X));` ` ` `}` ` ` ` ` `let N = 5, X = 3;` ` ` ` ` `document.write(total_ways(N, X));` ` ` `</script>` |

**Output:**

10

Time Complexity: O(X)

Auxiliary Space: O(1)