Editorial for Copa Mundial FITA


Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.

Author: aniervs

Hay k grupos con la misma cantidad de equipos \left(\frac{n}{k}\right). Digamos que m = \frac{n}{k}.

Construyamos los grupos en orden, para cada grupo seleccionemos los equipos que pertencerán a él.

Hay \binom{n}{m} de seleccionar los miembros del primer grupo. Luego, quedan n - m equipos, y hay \binom{n-m}{m} formas de seleccionar los miembros del segundo grupo. Luego, quedan n - 2m equipos, y hay \binom{n-2m}{m} formas de seleccionar los miembros del tercer grupo. Y así sucesivamente, cuando vamos a seleccionar los miembros del i-ésimo grupo, hay n - m\cdot (i - 1) equipos, y hay \displaystyle \binom{n - m\cdot(i-1)}{m} formas de seleccionar sus miembros.

Así, la cantidad formas de asignar los equipos es:

\displaystyle  \binom{n}{m}\cdot \binom{n-m}{m} \cdot \binom{n-2m}{m}\cdot \dots \cdot \binom{m}{m}

Entonces, como n \le 2000, es suficiente precomputar estos coeficientes binomiales (con el triángulo de Pascal) y computar la respuesta para cada (n,k) en tiempo \mathcal{O}(k). Pero se puede hacer mejor:

Sabemos que \binom{n}{m} = \frac{n!}{(n - m)!m!}. Por tanto, la respuesta también es:

\displaystyle  \frac{n!}{(n - m)!m!} \cdot \frac{(n-m)!}{(n - 2m)!m!} \cdot  \frac{(n-2m)!}{(n - 3m)!m!} \cdot \dots \cdot \frac{(n-m(k-1))!}{(n - mk)!m!}

Luego de simplicar, obtenemos

\displaystyle  \frac{n!}{(m!)^k}

Entonces, podemos precomputar los factoriales, y calcular las potencias y sus inversos con potenciación y binaria. La complejidad temporal sería \mathcal{O}(n + T\cdot \log k), donde T es la cantidad de casos (que es a lo más 10^4).


Comments


  • 0
    Yosbany_ossoby  commented on July 22, 2022, 6:02 a.m.

    Como puedo efecturar la division. si hay que modular para ello. y te va a dar un resulatdo erroneo?


    • 0
      aniervs  commented on July 22, 2022, 10:05 a.m.

      Debes aprender lo que es inverso multiplicativo. El