Número de formas de distribuir N Paper Set entre M estudiantes

Dados N estudiantes y un total de M juegos de cuestionarios donde M ≤ N . Todos los juegos M son diferentes y cada juego está disponible en cantidad suficiente. Todos los estudiantes están sentados en una sola fila. La tarea es encontrar el número de formas de distribuir el cuestionario de modo que si se seleccionan M estudiantes consecutivos, cada estudiante tenga un conjunto de cuestionarios único. La respuesta podría ser grande, así que imprima la respuesta módulo 10 9 + 7 .
Ejemplo: 
 

Entrada: N = 2, M = 2 
Salida:
(A, B) y (B, A) son las únicas formas posibles.
Entrada: N = 15, M = 4 
Salida: 24 
 

Planteamiento: Se puede observar que el número de caminos son independientes de N y solo dependen de M . Primero se les pueden dar M conjuntos a M estudiantes y luego se puede repetir el mismo patrón. ¡El número de formas de distribuir el cuestionario de esta manera es M! . Por ejemplo, 
 

N = 6, M = 3 
A, B, C, A, B, C 
A, C, B, A, C, B B 
, C, A, B, C, A B, A 
, C, B, A, C 
C, A, B, C, A 
, B C, B, A, C, B, A 
 

A continuación se muestra la implementación del enfoque anterior: 
 

C++

// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
const int MOD = 1000000007;
 
// Function to return n! % 1000000007
int factMod(int n)
{
 
    // To store the factorial
    long fact = 1;
 
    // Find the factorial
    for (int i = 2; i <= n; i++) {
        fact *= (i % MOD);
        fact %= MOD;
    }
 
    return fact;
}
 
// Function to return the
// count of possible ways
int countWays(int n, int m)
{
    return factMod(m);
}
 
// Driver code
int main()
{
    int n = 2, m = 2;
 
    cout << countWays(n, m);
 
    return 0;
}

Java

// Java implementation of the approach
import java.util.*;
 
class GFG
{
static int MOD = 1000000007;
 
// Function to return n! % 1000000007
static int factMod(int n)
{
 
    // To store the factorial
    long fact = 1;
 
    // Find the factorial
    for (int i = 2; i <= n; i++)
    {
        fact *= (i % MOD);
        fact %= MOD;
    }
    return (int)fact;
}
 
// Function to return the
// count of possible ways
static int countWays(int n, int m)
{
    return factMod(m);
}
 
// Driver code
public static void main(String args[])
{
    int n = 2, m = 2;
 
    System.out.print(countWays(n, m));
}
}
 
// This code is contributed by Arnab Kundu

Python3

# Python3 implementation of the approach
MOD = 1000000007;
 
# Function to return n! % 1000000007
def factMod(n) :
 
    # To store the factorial
    fact = 1;
 
    # Find the factorial
    for i in range(2, n + 1) :
        fact *= (i % MOD);
        fact %= MOD;
 
    return fact;
 
# Function to return the
# count of possible ways
def countWays(n, m) :
 
    return factMod(m);
 
# Driver code
if __name__ == "__main__" :
 
    n = 2; m = 2;
 
    print(countWays(n, m));
 
# This code is contributed by AnkitRai01

C#

// C# implementation of the approach
using System;
 
class GFG
{
    static int MOD = 1000000007;
     
    // Function to return n! % 1000000007
    static int factMod(int n)
    {
        // To store the factorial
        int fact = 1;
     
        // Find the factorial
        for (int i = 2; i <= n; i++)
        {
            fact *= (i % MOD);
            fact %= MOD;
        }
        return fact;
    }
 
    // Function to return the
    // count of possible ways
    static int countWays(int n, int m)
    {
        return factMod(m);
    }
     
    // Driver code
    public static void Main()
    {
        int n = 2, m = 2;
        Console.Write(countWays(n, m));
    }
}
 
// This code is contributed by Sanjit Prasad

Javascript

<script>
// javascript implementation of the approach
     MOD = 1000000007;
 
    // Function to return n! % 1000000007
    function factMod(n) {
 
        // To store the factorial
        var fact = 1;
 
        // Find the factorial
        for (i = 2; i <= n; i++) {
            fact *= (i % MOD);
            fact %= MOD;
        }
        return parseInt( fact);
    }
 
    // Function to return the
    // count of possible ways
    function countWays(n , m) {
        return factMod(m);
    }
 
    // Driver code
     
        var n = 2, m = 2;
 
        document.write(countWays(n, m));
 
// This code contributed by aashish1995
</script>
Producción: 

2

 

Complejidad de tiempo: O(n)

Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por pp_pankaj 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 *