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: 2
(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>
2
Complejidad de tiempo: O(n)
Espacio Auxiliar: O(1)