0Pricing
Competitive Programming Academy · Aula

Trabalhando Módulo um Primo

Some, multiplique e permaneça dentro do módulo.

Trabalhando Módulo um Primo é uma aula grátis de Competitive Programming Academy no CoddyKit. Esta é a aula 1 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 Competitive Programming Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Competitive Programming Academy inclui 4 aulas no total.

Por que usar o módulo

As respostas de competições podem crescer enormemente, muito além de qualquer tipo inteiro usado em outros contextos. Por isso, os problemas pedem o resultado módulo um primo grande, para manter os números pequenos. 🔢

Conheça o famoso módulo

O primo que você verá com mais frequência é 1000000007, geralmente escrito como 1e9+7. Ele é grande o bastante para evitar colisões e pequeno o bastante para caber em 64 bits.

MOD = 1000000007

O que significa módulo

O operador módulo fornece o resto após uma divisão. Portanto, 17 % 5 é 2, porque 17 deixa resto 2 quando dividido por 5.

print(17 % 5)  # 2

A adição permanece dentro do módulo

Você pode somar primeiro e calcular o módulo no final, ou calcular o módulo à medida que avança. O resto será o mesmo de qualquer forma, portanto reduza os valores com frequência para mantê-los pequenos.

total = (a + b) % MOD

A multiplicação também permanece dentro do módulo

A mesma regra vale para a multiplicação: calcule o produto módulo o primo. O Python lida nativamente com inteiros grandes, mas calcular o módulo mantém cada valor pequeno e torna a execução mais rápida.

prod = (a * b) % MOD

Reduza após cada etapa

Em um loop longo, aplique % MOD a cada iteração. Isso impede que os números cresçam demais e mantém cada operação barata e previsível.

ans = (ans * i) % MOD

A subtração pode resultar em um número negativo

A subtração pode produzir um resto negativo em muitas linguagens. Adicione MOD novamente antes do módulo final para que o resultado fique no intervalo seguro de 0 a MOD - 1.

diff = (a - b + MOD) % MOD

O módulo amigável do Python

Boas notícias: o % do Python já retorna um resultado não negativo quando o módulo é positivo. Assim, -1 % 7 fornece 6, não -1, e você não precisa fazer uma correção adicional.

print(-1 % 7)  # 6

O módulo se distribui sobre as operações

A ideia central é: (a op b) % m é igual a (a%m op b%m) % m para adição e multiplicação. Isso permite reduzir as entradas antes de combiná-las.

A divisão é a exceção

Adição, subtração e multiplicação funcionam de forma simples sob um módulo. A divisão comum, porém, não funciona assim, e você precisará de um inverso modular mais adiante neste curso.

Defina MOD uma vez no início

Defina MOD como uma constante no início da sua solução. Um único valor nomeado é melhor do que espalhar 1000000007 pelo código, onde um erro de digitação pode passar despercebido.

MOD = 10**9 + 7

Verificação rápida

Por que adicionar MOD antes de calcular o módulo de uma subtração?

Revisão

Agora você mantém contagens enormes pequenas usando um módulo primo como 1e9+7. Reduza a adição, a subtração e a multiplicação a cada etapa, cuide dos valores negativos e deixe a divisão para os inversos. 🎯

Perguntas Frequentes

A aula “Trabalhando Módulo um Primo” é grátis?

Sim — o texto completo de “Trabalhando Módulo um Primo” é 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 Competitive Programming Academy, atualize para CoddyKit PRO. O curso de Competitive Programming Academy inclui 4 aulas no total.

O que vou aprender em “Trabalhando Módulo um Primo”?

Some, multiplique e permaneça dentro do módulo. Você pratica Competitive Programming Academy 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 Competitive Programming Academy?

Nenhuma experiência prévia é necessária. Competitive Programming Academy 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 1 de 4.

Quanto tempo leva a aula “Trabalhando Módulo um Primo”?

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 Competitive Programming Academy?

Sim. Cada aula de Competitive Programming Academy 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 Competitive Programming Academy