Dados n y m , la tarea es encontrar el número de permutaciones de n cosas distintas tomándolas todas a la vez de modo que m cosas particulares nunca se unan.
Ejemplos:
Input : 7, 3 Output : 420 Input : 9, 2 Output : 282240
Enfoque:
Derivación de la fórmula –
Número total de arreglos posibles usando n objetos distintos tomando todos a la vez =
Número de arreglos de n cosas distintas tomando todos a la vez, cuando m cosas particulares siempre se juntan, es
Por lo tanto, el número de permutaciones de cosas distintas tomando todas a la vez, cuando las cosas particulares nunca se juntan –
Permutations = n! - (n-m+1)! × m!
A continuación se muestra la implementación de Python del enfoque anterior:
C++
#include<bits/stdc++.h> using namespace std; int factorial(int n) { int fact = 1; for (int i = 2; i <= n; i++) fact = fact * i ; return (fact); } int result(int n, int m) { return(factorial(n) - factorial(n - m + 1) * factorial(m)); } // Driver Code int main() { cout(result(5, 3)); } // This code is contributed by Mohit Kumar
Java
class GFG { static int factorial(int n) { int fact = 1; for (int i = 2; i <= n; i++) fact = fact * i ; return (fact); } static int result(int n, int m) { return(factorial(n) - factorial(n - m + 1) * factorial(m)); } // Driver Code public static void main(String args[]) { System.out.println(result(5, 3)); } } // This code is contributed by Arnab Kundu
Python3
def factorial(n): fact = 1; for i in range(2, n + 1): fact = fact * i return (fact) def result(n, m): return(factorial(n) - factorial(n - m + 1) * factorial(m)) # driver code print(result(5, 3))
C#
using System; class GFG { static int factorial(int n) { int fact = 1; for (int i = 2; i <= n; i++) fact = fact * i ; return (fact); } static int result(int n, int m) { return(factorial(n) - factorial(n - m + 1) * factorial(m)); } // Driver Code public static void Main() { Console.WriteLine(result(5, 3)); } } // This code is contributed by AnkitRai01
Javascript
<script> // Below is the JavaScript implementation of above approach function factorial(n) { let fact = 1; for (let i = 2; i <= n; i++) fact = fact * i ; return (fact); } function result(n, m) { return(factorial(n) - factorial(n - m + 1) * factorial(m)); } // Driver Code document.write(result(5, 3)); // This code is contributed by Surbhi Tyagi. </script>
Producción :
84
Complejidad de tiempo: O(n)
Espacio Auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por Atul_kumar_Shrivastava y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA