Permutaciones de n cosas tomadas todas a la vez con m cosas nunca se juntan

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!
Número de arreglos de n cosas distintas tomando todos a la vez, cuando m cosas particulares siempre se juntan, es  (n-m+1)! × m!
Por lo tanto, el número de permutaciones de  n   cosas distintas tomando todas a la vez, cuando  m   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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *