Arranjo com Repetição na prática
O assunto aparece com frequência em listas de exercícios e em entrevistas técnicas quando alguém precisa calcular possibilidades de senhas, códigos ou combinações em que posições podem se repetir. A coisa parece simples no papel, mas tem alguns pontos que costumam confundir gente experiente também.
Qual é a fórmula arranjo com repetição
A conta é direta demais para complicar: AR(n, p) = n^p. Você pega o número de elementos disponíveis e eleva à potência da quantidade de posições que precisa preencher. Nada mais. O fator n representa os itens do seu grupo, e o expoente p é quantos lugares você está ocupando. Se você tem 10 dígitos (0 a 9) e quer formar senhas com 4 posições, onde cada posição pode repetir qualquer dígito, o cálculo é 10 elevado a 4, o que dá 10.000 combinações possíveis. O que diferencia isso do arranjo simples é a permissão de repetição. No arranjo sem repetição, cada elemento só pode aparecer uma vez por posição, então a conta muda completamente para A(n,p) = n! / (n-p)!. Com repetição, você não tira nada do bolo a cada escolha, o que mantém o numerador fixo em n para cada uma das p casas.
Eu já vi gente travar porque confunde arranjo com repetição com combinação com repetição. São problemas diferentes. Combinação não se importa com a ordem dos elementos; arranjo sim. Se a sequência ABC é diferente de CBA, você está lidando com arranjo. Se não faz diferença a ordem, ai é combinação.
Quando isso aparece no dia a dia
Cenários reais onde o ARR com repetição se aplica: gerador de senhas com comprimento fixo, códigos PIN de caixas eletrônicos, combinações de fechaduras numéricas, linhas de produção onde cada etapa pode usar qualquer uma das n máquinas disponíveis, e testes de stress onde você precisa mapear todas as entradas possíveis de um sistema com n estados e p transições. Um caso que eu enfrentei recentemente foi numa análise de segurança para um sistema interno onde os usuários podiam escolher senhas de 6 caracteres usando apenas dígitos de 0 a 9. A equipe de compliance pediu o espaço amostral completo. A conta era trivial — 10^6 = 1.000.000 — mas o problema real era que o sistema só permitia dígitos pares, o que reduzia o espaço para 5^6 = 15.625. Percebi a restrição só quando fui validar as senhas geradas e notei que todas as opções ímpares estavam sendo rejeitadas pelo validador. A correção foi ajustar o valor de n de 10 para 5 antes de aplicar a fórmula. Sem esse ajuste, a estimativa de complexidade ficava seis vezes maior do que realmente era, o que leva a conclusões erradas sobre a segurança do sistema.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Pegadinhas que ninguém conta
A primeira armadilha comum é esquecer de verificar se a ordem realmente importa. Se o seu problema é sobre escolher ingredientes para uma receita onde AB e BA são a mesma mistura, você não está diante de um arranjo. Está diante de combinação com repetição, cuja fórmula é C'(n,p) = (n+p-1)! / (p! × (n-1)!). Usar a fórmula errada aqui gera números absurdamente inflados. A segunda pegadinha aparece quando p é maior que n. No arranjo simples isso é impossível — você não pode mais elementos do que tem disponíveis sem repetir. No arranjo com repetição, p pode ser arbitrariamente grande porque a reposição é permitida. Isso não significa que o cálculo fique mais difícil, mas muda completamente a intuição. Muita gente trava mentalmente quando vê p = 8 e n = 3 e pensa que não dá para resolver. Dá, sim. É simplesmente 3^8 = 6.561.
Outro ponto que causa confusão é a notação. Alguns materiais usam AR(n,p), outros usam A'R(n,p), e há ainda quem escreva simplesmente n^p sem nomear nada. Se você está estudando para uma prova ou seguindo um livro específico, verifique qual convenção o autor usa antes de copiar fórmulas de fontes diferentes.
Limitações que valem a pena saber
O ARR com repetição funciona bem quando n e p são pequenos. Quando p cresce acima de 20 e n é maior que 5, os números ficam enormes rapidamente. 10^20 já passa do limite de precisão de muitos idiomas de programação em ponto flutuante. Se você precisa trabalhar com esses tamanhos, considere usar logaritmos para comparar grandezas em vez de calcular o valor exato, ou bibliotecas de precisão arbitrária se o valor absoluto for necessário. Também não serve para problemas onde há restrições laterais, como "o dígito 7 não pode aparecer duas vezes seguidas" ou "a posição 3 deve ser obrigatoriamente par". Nesses casos, a fórmula pura não resolve. Você precisa de princípios de inclusão-exclusão ou programação dinâmica. Eu já passei por isso em um projeto de criptografia onde a restrição de dígitos consecutivos idênticos reduzia o espaço de busca em cerca de 30%, e a abordagem de força bruta com a fórmula básica simplesmente não capturava esse comportamento.
Se o seu objetivo é apenas estimar ordens de grandeza para tomada de decisão rápida, a fórmula é útil e rápida. Se precisa de exatidão em cenários com restrições, prepare-se para complicar o modelo. Não existe solução única que cubra todos os casos.
Exemplo passo a passo
Vamos montar um exemplo concreto. Suponha que uma empresa de logística precisa gerar códigos de rastreamento com 5 letras, usando apenas o alfabeto de 26 letras, permitindo repetição. A conta é 26^5. Fazendo a multiplicação: 26 × 26 = 676, 676 × 26 = 17.576, 17.576 × 26 = 456.976, 456.976 × 26 = 11.881.376. São pouco mais de 11 milhões de códigos possíveis. Se a empresa aumentar para 6 letras, o total salta para 308.915.776. O crescimento exponencial é o que mais importa aqui: cada posição adicional multiplica o espaço por n, não soma. Isso explica por que senhas curtas com pouco vocabulário de caracteres são tão fáceis de quebrar. O problema não é a lógica do sistema, é o tamanho do espaço amostral que a fórmula revela de forma transparente.