0Pricing
Coding Interview Prep · Aula

nCr com Fatoriais Pré-calculados

Conte combinações módulo um primo.

nCr com Fatoriais Pré-calculados é uma aula grátis de Coding Interview Prep no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Coding Interview Prep, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Coding Interview Prep inclui 4 aulas no total.

Contagem de combinações

Muitos problemas perguntam de quantas maneiras é possível escolher r itens de n, escrito como nCr. As competições pedem essa contagem sob um módulo primo. 🧮

A fórmula do fatorial

A fórmula clássica é nCr igual a n fatorial dividido por r fatorial vezes n menos r fatorial. O problema é que a divisão sob um módulo não é direta.

# nCr = n! / (r! * (n-r)!)

Os fatoriais crescem demais

Um único fatorial cresce astronomicamente, portanto calcule cada um módulo p. Isso mantém todos os valores pequenos, enquanto a fórmula continua exata sob o módulo.

Pré-calcule todos os fatoriais

Construa uma matriz de fatoriais uma única vez, até o maior n de que você precisa. Cada entrada é a anterior multiplicada pelo índice, calculada módulo p à medida que você avança.

fact[i] = fact[i-1] * i % MOD

A divisão precisa de inversos

A fórmula divide por dois fatoriais, portanto você precisa dos inversos modulares deles. Lembre-se: o inverso transforma a divisão em uma multiplicação simples.

Calcule o inverso do maior fatorial

Calcule o inverso do maior fatorial apenas uma vez usando Fermat, com pow e o expoente p menos 2. Essa única chamada inicia o restante do processo.

inv_fact[n] = pow(fact[n], MOD - 2, MOD)

Calcule os inversos de trás para frente

Obtenha os outros inversos de fatoriais em uma única passagem para trás, cada um a partir do próximo multiplicado pelo índice. Não são necessárias chamadas adicionais a pow.

inv_fact[i] = inv_fact[i+1] * (i+1) % MOD

Monte nCr

Agora, nCr é simplesmente fact[n] multiplicado por inv_fact[r] e por inv_fact[n menos r], tudo módulo p. São três consultas e duas multiplicações por consulta.

C = fact[n] * inv_fact[r] % MOD * inv_fact[n-r] % MOD

Cada consulta é instantânea

Depois do pré-cálculo, cada resposta de combinação é obtida em O(1). É por isso que esse padrão é excelente quando um problema pede milhares de valores de nCr.

Trate os casos extremos

Se r for negativo ou maior que n, a resposta será 0. Verifique esse limite primeiro para nunca acessar uma posição fora das suas matrizes de fatoriais.

if r < 0 or r > n: return 0

Dimensione as matrizes com folga

Defina o tamanho da matriz como o maior n entre todas as consultas, mais uma pequena margem. Um limite pequeno demais é uma causa comum de erros de índice aqui.

N = 200005

Verificação rápida

Depois do pré-cálculo, qual é a velocidade de uma consulta nCr?

Revisão

Você pré-calcula os fatoriais e seus inversos uma vez e, depois, responde a cada nCr em O(1) com três consultas. Verifique os limites de r e dimensione as matrizes com tamanho suficiente. 🏆

Perguntas Frequentes

A aula “nCr com Fatoriais Pré-calculados” é grátis?

Sim — o texto completo de “nCr com Fatoriais Pré-calculados” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Coding Interview Prep, atualize para CoddyKit PRO. O curso de Coding Interview Prep inclui 4 aulas no total.

O que vou aprender em “nCr com Fatoriais Pré-calculados”?

Conte combinações módulo um primo. Você pratica Coding Interview Prep com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Coding Interview Prep?

Nenhuma experiência prévia é necessária. Coding Interview Prep no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “nCr com Fatoriais Pré-calculados”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Coding Interview Prep?

Sim. Cada aula de Coding Interview Prep inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Trabalhando Módulo um Primo
  2. exponenciação Modular Rápida
  3. Inverso Modular por Fermat
  4. nCr com Fatoriais Pré-calculados
← Voltar para Coding Interview Prep