There are n boys and n (n < 10) girls are to be seated around a round table, in a circle. The task is to find the number of ways in which n boys and n girls can sit alternatively around a round table.
Examples:
Input: n = 5
Output: 2880Input: n = 1
Output: 1
Explanation: There is only 1 boy and 1 girl.
So there is only one possible arrangement
Approach:
- First, find the total number of ways in which boys can be arranged on a round table.
No. of ways to arrange boys on table = (n-1)! - After making boys’ arrangements, now make arrangements for girls. After seating boys, there are n space available between them. So there are n positions and n number of girls.
- So the total number of arrangement in which girls sit between boys are n!.
- Therefore Total number of ways = (number of arrangements of boys) * (number of ways to sit girl among boys) = (n-1)! * (n!)
Below is the implementation of the above approach:
C++
// C++ program to find number of ways in which // n boys and n girls can sit alternatively // sound a round table. #include <bits/stdc++.h> using namespace std;
#define ll long int int main()
{ // Get n
ll n = 5;
// find fac1 = (n-1)!
ll fac1 = 1;
for ( int i = 2; i <= n - 1; i++)
fac1 = fac1 * i;
// Find fac2 = n!
ll fac2 = fac1 * n;
// Find total number of ways
ll totalWays = fac1 * fac2;
// Print the total number of ways
cout << totalWays << endl;
return 0;
} |
Java
// Java program to find number of ways // in which n boys and n girls can sit // alternatively sound a round table. import java .io.*;
class GFG
{ public static void main(String[] args)
{ // Get n
long n = 5 ;
// find fac1 = (n-1)!
long fac1 = 1 ;
for ( int i = 2 ; i <= n - 1 ; i++)
fac1 = fac1 * i;
// Find fac2 = n!
long fac2 = fac1 * n;
// Find total number of ways
long totalWays = fac1 * fac2;
// Print the total number of ways
System.out.println(totalWays);
} } // This code is contributed // by anuj_67.. |
Python3
# Python3 program to find number # of ways in which n boys and n # girls can sit alternatively # sound a round table. # Get n n = 5
# find fac1 = (n-1)! fac1 = 1
for i in range ( 2 , n):
fac1 = fac1 * i
# Find fac2 = n! fac2 = fac1 * n
# Find total number of ways totalWays = fac1 * fac2
# Print the total number of ways print (totalWays)
# This code is contributed # by sahilshelangia |
C#
// C# program to find number of ways // in which n boys and n girls can sit // alternatively sound a round table. using System;
class GFG
{ public static void Main()
{ // Get n
long n = 5;
// find fac1 = (n-1)!
long fac1 = 1;
for ( int i = 2; i <= n - 1; i++)
fac1 = fac1 * i;
// Find fac2 = n!
long fac2 = fac1 * n;
// Find total number of ways
long totalWays = fac1 * fac2;
// Print the total number of ways
Console.WriteLine(totalWays);
} } // This code is contributed // by Akanksha Rai(Abby_akku) |
PHP
<?php // PHP program to find number of // ways in which n boys and n // girls can sit alternatively // sound a round table. // Driver Code // Get n $n = 5;
// find fac1 = (n-1)! $fac1 = 1;
for ( $i = 2; $i <= $n - 1; $i ++)
$fac1 = $fac1 * $i ;
// Find fac2 = n! $fac2 = $fac1 * $n ;
// Find total number of ways $totalWays = $fac1 * $fac2 ;
// Print the total number of ways echo $totalWays . "\n" ;
// This code is contributed // by Akanksha Rai(Abby_akku) |
Javascript
<script> // Javascript program to find number of // ways in which n boys and n // girls can sit alternatively // sound a round table. // Driver Code // Get n let n = 5; // find fac1 = (n-1)! let fac1 = 1; for (let i = 2; i <= n - 1; i++)
fac1 = fac1 * i;
// Find fac2 = n! fac2 = fac1 * n; // Find total number of ways totalWays = fac1 * fac2; // Print the total number of ways document.write(totalWays + "<br>" );
// This code is contributed // by gfgking </script> |
Output
2880
Time complexity: O(n), for iterating over n to calculate factorial.
Auxiliary Space: O(1)