Contando Permutaciones


Submit solution

Points: 100 (partial)
Time limit: 1.0s
Memory limit: 256M

Author:
Problem type
Allowed languages
C++, Python

Dado un conjunto S de N objetos distintos, digamos S = {O1, O2, …, ON}; es bien conocido que el número de ordenamientos distintos o permutaciones de esos N objetos es igual al producto de los N primeros números naturales: 1 2 3 N, este producto se llama Factorial de N y se denota así N!. Este problema, como su nombre lo indica, trata acerca de contar permutaciones, pero con una restricción para hacerlo más interesante ;)

La restricción es la siguiente: dado el entero K con 0 < K < N, considere los K primeros objetos: O1, O2, …, OK del conjunto S, se quiere contar aquellas permutaciones en que el N-ésimo objeto ON está antes de los K mencionados. Ejemplo sea S = {A, B, C, D} y K = 2, para estos valores de S y K nos piden contar las permutaciones donde la D está antes que la A y la D está antes que la B, serían las siguientes:

CDAB, CDBA, DABC, DACB, DBAC, DBCA, DCAB, DCBA. Por lo que la respuesta es 8.

Especificación de entrada

La entrada consiste de dos enteros N y K.

Especificación de salida

Imprima la cantidad de permutaciones pedida. Como la respuesta puede ser realmente grande imprima el resto de la misma con 10^9 + 7.

Ejemplo de entrada

3 2

6 2

2 1

1000 600

Ejemplo de salida

2

240

1

994411687

Subtareas:

Subtarea 1: 2 <= N <= 10.

Subtarea 2: 2 <= N <= 1000.

Subtarea 3: 2 <= N <= 1000000.


Comments

There are no comments at the moment.