Dados tres números enteros N , X e Y . La tarea es encontrar el número de formas de colocar 2*N personas a lo largo de dos lados de una mesa con N número de sillas en cada lado, de modo que X personas estén en un lado e Y personas en el lado opuesto.
Nota: Tanto X como Y son menores o iguales a N.
Ejemplos:
Entrada: N = 5, X = 4, Y = 2
Salida: 57600
Explicación:
El número total de personas 10. X hombres de un lado e Y del otro lado, luego quedan 10 – 4 – 2 = 4 personas. Podemos elegir 5 – 4 = 1 de ellos en un lado de manera y las personas restantes se sentarán automáticamente en el otro lado. En cada lado el arreglo se hace en 5! maneras. El número de formas es .5!5!
Entrada: N = 3, X = 1, Y = 2
Salida: 108
Aproximación:
El número total de personas 2*N. Llamemos a ambos lados como A y B. X hombres en el lado A e Y en el lado B, luego quedan 2 * N – X – Y personas. Podemos elegir NX de ellos para el lado A en formas y las personas restantes se sentarán automáticamente en el otro lado B. ¡En cada lado el arreglo se hace en N! maneras. El número de formas de colocar 2*N personas a lo largo de dos lados de una mesa es .N!N!
A continuación se muestra la implementación del enfoque anterior:
C++
#include <bits/stdc++.h> using namespace std; // Function to find factorial of a number int factorial(int n) { if (n <= 1) return 1; return n * factorial(n - 1); } // Function to find nCr int nCr(int n, int r) { return factorial(n) / (factorial(n - r) * factorial(r)); } // Function to find the number of ways to arrange 2*N persons int NumberOfWays(int n, int x, int y) { return nCr(2*n-x-y, n-x) * factorial(n) * factorial(n); } // Driver code int main() { int n = 5, x = 4, y = 2; // Function call cout << NumberOfWays(n, x, y); return 0; }
Java
// Java implementation for the above approach import java.util.*; import java.lang.*; import java.io.*; class GFG { // Function to returns factorial of n static int factorial(int n) { if (n <= 1) return 1; return n * factorial(n - 1); } // Function to find nCr static int nCr(int n, int r) { return factorial(n) / (factorial(n - r) * factorial(r)); } // Function to find the number of ways // to arrange 2*N persons static int NumberOfWays(int n, int x, int y) { return nCr(2 * n - x - y, n - x) * factorial(n) * factorial(n); } // Driver code public static void main (String[] args) throws java.lang.Exception { int n = 5, x = 4, y = 2; // Function call System.out.println(NumberOfWays(n, x, y)); } } // This code is contributed by Nidhiva
Python3
# Python3 implementation for the above approach # Function to find factorial of a number def factorial(n): if (n <= 1): return 1; return n * factorial(n - 1); # Function to find nCr def nCr(n, r): return (factorial(n) / (factorial(n - r) * factorial(r))); # Function to find the number of ways # to arrange 2*N persons def NumberOfWays(n, x, y): return (nCr(2 * n - x - y, n - x) * factorial(n) * factorial(n)); # Driver code n, x, y = 5, 4, 2; # Function call print(int(NumberOfWays(n, x, y))); # This code is contributed by PrinciRaj1992
C#
// C# implementation for the above approach using System; class GFG { // Function to returns factorial of n static int factorial(int n) { if (n <= 1) return 1; return n * factorial(n - 1); } // Function to find nCr static int nCr(int n, int r) { return factorial(n) / (factorial(n - r) * factorial(r)); } // Function to find the number of ways // to arrange 2*N persons static int NumberOfWays(int n, int x, int y) { return nCr(2 * n - x - y, n - x) * factorial(n) * factorial(n); } // Driver code public static void Main(String[] args) { int n = 5, x = 4, y = 2; // Function call Console.WriteLine(NumberOfWays(n, x, y)); } } // This code is contributed by Princi Singh
PHP
<?php // PHP implementation for the above approach // Function to find factorial of a number function factorial($n) { if ($n <= 1) return 1; return $n * factorial($n - 1); } // Function to find nCr function nCr($n, $r) { return factorial($n) / (factorial($n - $r) * factorial($r)); } // Function to find the number of ways // to arrange 2*N persons function NumberOfWays($n, $x, $y) { return nCr(2 * $n - $x - $y, $n - $x) * factorial($n) * factorial($n); } // Driver code $n = 5; $x = 4; $y = 2; // Function call echo (NumberOfWays($n, $x, $y)); // This code is contributed by Naman_garg. ?>
Javascript
<script> // JavaScript implementation for the above approach // Function to returns factorial of n function factorial(n) { if (n <= 1) return 1; return n * factorial(n - 1); } // Function to find nCr function nCr(n , r) { return factorial(n) / (factorial(n - r) * factorial(r)); } // Function to find the number of ways // to arrange 2*N persons function NumberOfWays(n , x , y) { return nCr(2 * n - x - y, n - x) * factorial(n) * factorial(n); } // Driver code var n = 5, x = 4, y = 2; // Function call document.write(NumberOfWays(n, x, y)); // This code contributed by Rajput-Ji </script>
57600