nCr con factoriales precalculados
Cuente combinaciones módulo un primo
nCr con factoriales precalculados es una lección gratuita de Coding Interview Prep en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Coding Interview Prep, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Coding Interview Prep incluye 4 lecciones en total.
Contar combinaciones
Muchos problemas preguntan de cuántas formas se pueden elegir r elementos de n, lo que se escribe nCr. En los concursos, este conteo se solicita bajo un módulo primo. 🧮
La fórmula del factorial
La fórmula clásica es nCr igual a n factorial dividido entre r factorial por n menos r factorial. El problema es que la división se realiza bajo un módulo.
# nCr = n! / (r! * (n-r)!)Los factoriales crecen demasiado
Un solo factorial crece de forma astronómica, así que debe tomar cada uno módulo p. Esto mantiene pequeños todos los valores y conserva la exactitud de la fórmula bajo el módulo.
Precalcule todos los factoriales
Construya una matriz fact una sola vez hasta el n máximo que necesite. Cada entrada es la anterior multiplicada por el índice, tomando el módulo p durante el proceso.
fact[i] = fact[i-1] * i % MODLa división necesita inversos
La fórmula divide entre dos factoriales, por lo que necesita sus inversos modulares. Recuerde que el inverso convierte la división en una multiplicación sencilla.
Invierta el factorial superior
Calcule una sola vez el inverso del factorial más grande mediante Fermat, usando pow con el exponente p menos 2. Esa única llamada inicia el resto del proceso.
inv_fact[n] = pow(fact[n], MOD - 2, MOD)Obtenga los inversos hacia atrás
Obtenga los demás factoriales inversos en un solo recorrido hacia atrás, cada uno a partir del siguiente multiplicado por el índice. No necesita llamadas adicionales a pow.
inv_fact[i] = inv_fact[i+1] * (i+1) % MODConstruya nCr
Ahora nCr es simplemente fact[n] multiplicado por inv_fact[r] y por inv_fact[n menos r], todo módulo p. Son tres accesos y dos multiplicaciones por consulta.
C = fact[n] * inv_fact[r] % MOD * inv_fact[n-r] % MODCada consulta es instantánea
Después del precálculo, cada respuesta de combinación cuesta O(1). Por eso este patrón resulta tan útil cuando un problema solicita miles de valores nCr.
Controle los casos límite
Si r es negativo o mayor que n, la respuesta es 0. Compruebe primero ese límite para no acceder nunca fuera de sus matrices de factoriales.
if r < 0 or r > n: return 0Dimensione las matrices con margen
Establezca el tamaño de la matriz en el n máximo de todas las consultas más un pequeño margen. Un límite demasiado pequeño es una causa habitual de errores de índice.
N = 200005Comprobación rápida
Después del precálculo, ¿qué velocidad tiene una consulta nCr?
Resumen
Precalcula los factoriales y sus inversos una sola vez, y después responde cada nCr en O(1) con tres accesos. Controle los límites de r y dimensione las matrices con suficiente capacidad. 🏆
Preguntas frecuentes
¿La lección «nCr con factoriales precalculados» es gratis?
Sí — el texto completo de «nCr con factoriales precalculados» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Coding Interview Prep, actualiza a CoddyKit PRO. El curso de Coding Interview Prep incluye 4 lecciones en total.
¿Qué aprenderé en «nCr con factoriales precalculados»?
Cuente combinaciones módulo un primo Practicas Coding Interview Prep con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Coding Interview Prep?
No se requiere experiencia previa. Coding Interview Prep en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «nCr con factoriales precalculados»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Coding Interview Prep?
Sí. Cada lección de Coding Interview Prep incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Trabaje módulo un primo
- Exponenciación modular rápida
- Inverso modular mediante Fermat
- nCr con factoriales precalculados