# Ways of dividing a group into two halves such that two elements are in different groups

Given 2n girls and randomly divided into two subgroups each containing n girls. The task is to count the number of ways in which groups can be formed such that two beautiful girls are into different groups.

Example:

Input: 4
Output: 4
Let group be r1, r2, b1, b2 where b1 and b2 are beautiful girls
Groups are: ((r1, b1) (r2, b2)), ((r1, b2) (r2, b1)), ((r2, b2) (r1, b1)), ((r2, b1) (r1, b2))

Input: 8
Output: 40

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

Approach: There are two ways in which the two beautiful girls lie in different groups and corresponding to each way the remaining (2n – 2) girls can be divided into two groups is Hence total number of ways are 2 * Implementation Code :

## C++

 `// CPP Program to count ` `// Number of ways in which two ` `// Beautiful girls are in different group ` `#include ` `using` `namespace` `std; ` ` `  `// This function will ` `// return the factorial of a given number ` `int` `factorial(``int` `n) ` `{ ` `    ``int` `result = 1; ` `    ``for` `(``int` `i = 1; i <= n; i++) ` `        ``result = result * i; ` `    ``return` `result; ` `} ` ` `  `// This function will calculate nCr of given ` `// n and r ` `int` `nCr(``int` `n, ``int` `r) ` `{ ` `    ``return` `factorial(n) / (factorial(r) * factorial(n - r)); ` `} ` ` `  `// This function will ` `// Calculate number of ways ` `int` `calculate_result(``int` `n) ` `{ ` `    ``int` `result = 2 * nCr((n - 2), (n / 2 - 1)); ` `    ``return` `result; ` `} ` ` `  `// Driver Code ` `int` `main(``void``) ` `{ ` `    ``int` `a = 2, b = 4; ` `    ``cout << calculate_result(2 * a) << endl; ` `    ``cout << calculate_result(2 * b) << endl; ` ` `  `    ``return` `0; ` `} `

## Java

 `   ``//Java Program to count ` `// Number of ways in which two ` `// Beautiful girls are in different group ` ` `  `import` `java.io.*; ` ` `  `class` `GFG { ` ` `  `// This function will ` `// return the factorial of a given number ` `static` `int` `factorial(``int` `n) ` `{ ` `    ``int` `result = ``1``; ` `    ``for` `(``int` `i = ``1``; i <= n; i++) ` `        ``result = result * i; ` `    ``return` `result; ` `} ` ` `  `// This function will calculate nCr of given ` `// n and r ` `static` `int` `nCr(``int` `n, ``int` `r) ` `{ ` `    ``return` `factorial(n) / (factorial(r) * factorial(n - r)); ` `} ` ` `  `// This function will ` `// Calculate number of ways ` `static` `int` `calculate_result(``int` `n) ` `{ ` `    ``int` `result = ``2` `* nCr((n - ``2``), (n / ``2` `- ``1``)); ` `    ``return` `result; ` `} ` ` `  `// Driver Code ` ` `  `    ``public` `static` `void` `main (String[] args) { ` `        ``int` `a = ``2``, b = ``4``; ` `    ``System.out.println( calculate_result(``2` `* a)); ` `    ``System.out.print(calculate_result(``2` `* b)); ` ` `  `    ``} ` `} ` ` `  `// This code is contributed by inder_verma.. `

## Python3

 `# Python3 Program to count  ` `# Number of ways in which two  ` `# Beautiful girls are in different group  ` ` `  `# This function will  ` `# return the factorial of a  ` `# given number ` `def` `factorial(n) : ` ` `  `    ``result ``=` `1` `    ``for` `i ``in` `range``(``1``, n ``+` `1``) : ` `        ``result ``*``=` `i ` `         `  `    ``return` `result ` ` `  `# This function will calculate nCr of given  ` `# n and r  ` `def` `nCr(n, r) : ` ` `  `    ``return` `(factorial(n) ``/``/` `(factorial(r)  ` `            ``*` `factorial(n ``-` `r))) ` ` `  ` `  `# This function will  ` `# Calculate number of ways  ` `def` `calculate_result(n) : ` ` `  `    ``result ``=` `2` `*` `nCr((n ``-``2``), (n ``/``/` `2` `-` `1``)) ` ` `  `    ``return` `result ` ` `  ` `  `# Driver code ` `if` `__name__ ``=``=` `"__main__"` `: ` ` `  `    ``a, b ``=` `2``, ``4` `    ``print``(calculate_result(``2` `*` `a)) ` `    ``print``(calculate_result(``2` `*` `b)) ` ` `  `# This code is contributed by  ` `# ANKITRAI1 `

## C#

 `//C# Program to count ` `// Number of ways in which two ` `// Beautiful girls are in different groupusing System; ` ` `  `using` `System; ` ` `  `public` `class` `GFG { ` `  `  `// This function will ` `// return the factorial of a given number ` `static` `int` `factorial(``int` `n) ` `{ ` `    ``int` `result = 1; ` `    ``for` `(``int` `i = 1; i <= n; i++) ` `        ``result = result * i; ` `    ``return` `result; ` `} ` `  `  `// This function will calculate nCr of given ` `// n and r ` `static` `int` `nCr(``int` `n, ``int` `r) ` `{ ` `    ``return` `factorial(n) / (factorial(r) * factorial(n - r)); ` `} ` `  `  `// This function will ` `// Calculate number of ways ` `static` `int` `calculate_result(``int` `n) ` `{ ` `    ``int` `result = 2 * nCr((n - 2), (n / 2 - 1)); ` `    ``return` `result; ` `} ` `  `  `// Driver Code ` `  `  `    ``public` `static` `void` `Main () { ` `        ``int` `a = 2, b = 4; ` `    ``Console.WriteLine( calculate_result(2 * a)); ` `    ``Console.Write(calculate_result(2 * b)); ` `  `  `    ``} ` `} ` `  `  `// This code is contributed by Subhadeep `

## PHP

 ` `

Output:

```4
40
```

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.