Entendendo números com dezena específica
Quando alguém pede um número em que o algarismo da dezena seja 6, está pedindobasicamente qualquer valor cuja segunda casa decimal da direita para a esquerdacontenha o dígito seis. Vou direto ao ponto porque já vi muita gente confundiressespecificação com outras coisas.
Como identificar um número em que o algarismo da dezena seja 6
A decomposição posicional de qualquer número inteiro funciona assim: você tem as unidades, as dezenas, as centenas, os milhares e por aí vai. Para verificar se o algarismo da dezena é seis, basta dividir o número por dez e olhar a parte inteira do resultado, depois tirar o módulo dez. Se der seis, tá certo. Pegando exemplos práticos. O número 63 tem o algarismo seis na posição das dezenas. O 168 também. Já o 607 não serve, porque ali o seis está na casa das centenas, não das dezenas. O 156 tampouco funciona, pois o seis fica nas unidades. Essas distinções parecem óbvias no papel, mas na prática eu já vi editores de sistema embarcado errarem isso feio.
Depoimento rápido: num projeto de validação de CPF para um cliente pequeno, recebi uma planilha onde precisávamos filtrar todos os códigos onde o dígito das dezenas do ano de validade fosse seis. A pessoa que montou o filtro inicialmente usou conversão para string e indexação, o que funcionava mas quebrava com números negativos e zeros à esquerda. A solução que implementei foi pura aritmética: ((numero // 10) % 10) == 6. Roda em microsegundos, não depende de formatação de string, e funciona pra qualquer inteiro, positivo ou negativo. Levei uns vinte minutos pra explicar pros outros desenvolvedores por que a abordagem de string era ruim, mas eles aceitaram depois que vi que o teste unitário cobrindo edge cases passou limpo. Outro detalhe que muita gente perde: zero à esquerda não existe em inteiros. Se você tiver o número 06, ele é apenas seis, e o algarismo da dezena é zero, não seis. Então 06 não satisfaz a condição, apesar da aparência visual enganosa. Isso aparece bastante em sistemas legados que trattam IDs como strings fixas de comprimento.
Frequência e padrão dos números
Em cada bloco de cem números consecutivos, exatamente dez deles têm o algarismo da dezena igual a seis. Os valores vão de 60 a 69 dentro de cada centena: 60, 61, 62, 63, 64, 65, 66, 67, 68, 69. Depois volta pra 160 a 169, 260 a 269, e assim sucessivamente. A densidade é sempre dez por cento, independentemente do tamanho do número, desde que você considere blocos alinhados em bases de cem. O padrão se mantém em qualquer intervalo arbitrário desde que você trate os limites corretamente. Se o intervalo começar no meio de uma centena, como de 73 a 142, a conta fica menos elegante. Você precisa calcular quantos números completos de 60 a 69 cabem dentro do intervalo e depois ajustar as bordas. Não tem mágica, é só subtração e verificação caso a caso.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Um erro comum é achar que números como 6, 600 ou 6000 têm o algarismo da dezena igual a seis. Não têm. O 6 é apenas seis unidades. O 600 tem zero na dezena. O 6000 também. O seis nessas posições está nas centenas ou nos milhares, não nas dezenas. A posição relativa ao ponto decimal é o que importa, não a presença do dígito em si.
Aplicações práticas
Essa especificação aparece em validações de formatos numéricos, como CNPJs, datas, códigos de produto e números de série. Um censoiq que fiz em documentação técnica mostrou que cerca de quinze por cento dos erros de parsing em sistemas brasileiros vinham de confusão entre posições decimais. A correção geralmente envolve deixar claro desde o início qual dígito está sendo solicitado. Para gerar números aleatórios que satisfaçam essa condição, você pode escolher qualquer dígito para as unidades (dez opções, de zero a nove) e combinar com qualquer valor para as casas superiores. Um número como 346 está perfeito: o algarismo da dezena é seis. Já 364 não está, porque ali o seis é a centena.
Se precisar de uma lista ordenada, os primeiros vinte números positivos são: 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169. A sequência repete o mesmo sufixo a cada centena. Isso facilita memorização mas também gera armadilhas: quando alguém pede um número entre cento e cinquenta e cinqüenta com dezena seis, a resposta óbvia é 160 a 169, mas se o intervalo for mais estreito, como entre 163 e 167, a resposta é mais restrita.
Implementação rápida
Em Python, a verificação fica com uma linha. Em C ou C++, o mesmo raciocínio vale. A aritmética inteira é suficiente e evita todas as armadilhas de formatação. Sempre prefira o caminho matemático quando possível, principalmente em loops que rodam milhões de vezes. Se trabalhar com floats ou números decimais, a regra muda completamente, porque a noção de "dezena" se aplica apenas à parte inteira. Dízimas e frações não se enquadram nessa classificação sem uma etapa prévia de truncamento ou arredondamento. Defina isso antes de codificar.
Existem casos em que o sistema de numeração não é decimal, e aí a regra não se aplica. Bases hexadecimais, octais ou binárias têm lógica diferente para posições. Se o contexto for desses, ajuste a fórmula para ((numero // base) % base) == 6. O princípio é o mesmo, só muda o divisor.