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 = 1000000007O 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) # 2A 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) % MODA 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) % MODReduza 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) % MODA 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) % MODO 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) # 6O 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 + 7Verificaçã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
- Trabalhando Módulo um Primo
- exponenciação Modular Rápida
- Inverso Modular por Fermat
- nCr com Fatoriais Pré-calculados