Contando dígitos é mais chato do que parece
Todo mundo acha que isso é uma pergunta boba de entrevista de emprego ou de prova de matemática do ensino médio. A resposta imediata da maioria das pessoas é 10 ou 11. Errado. A resposta certa é 20. Eu já vi gente errar isso em processos seletivos para analista júnior em uma empresa de analytics, e o entrevistador só estava testando se a pessoa conseguia parar de supor e começar a contar com calma.
quantos noves tem de 0 a 100
Vamos ao ponto. De 0 a 100, o dígito 9 aparece nas casas das unidades e nas casas das dezenas. Na casa das unidades, ele aparece uma vez a cada dez números: 9, 19, 29, 39, 49, 59, 69, 79, 89, 99. São 10 ocorrências. Na casa das dezenas, o 9 aparece em todos os números de 90 a 99. Isso são mais 10 ocorrências. Soma: 20. O erro clássico é tratar 99 como um único nove. O número 99 tem dois algarismos iguais a 9. Muita gente conta 99 só uma vez na hora da soma e chega a 19. Ou então esquece de contar a faixa dos 90-99 e para nos 9, 19, 29... 89, chegando a 9. Se a pergunta fosse até 1000, o tipo de erro muda, mas o princípio é o mesmo. Você precisa separar por posição decimal.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Eu tive um problema real com isso há alguns anos. Estava construindo um script em Python para gerar relatórios de consistência de dados onde a validação precisava verificar a frequência de dígitos em IDs numéricos. A lógica inicial que eu escrevi contava 99 como um só nove porque eu estava usando uma abordagem de string simples sem considerar posições. O relatório finalmente saiu errado e ninguém percebeu porque o volume de dados era baixo. Quando aumentamos o dataset para milhões de registros, a contagem saiu 30% abaixo do esperado. A correção foi iterar sobre cada dígito individualmente com divisão inteira por 10, em vez de transformar o número em string e contar substrings. Agora, uma coisa que poucas pessoas mencionam: se você mudar o intervalo, a resposta não escala linearmente como você esperaria. De 0 a 99, são 20 nines. De 0 a 100, continua sendo 20, porque o 100 não adiciona nenhum 9. Parece óbvio, mas em entrevistas as pessoas ficam travadas achando que têm que fazer uma conta mais elaborada.
Outro detalhe prático que ninguém ensina: se a pergunta fosse quantos noves tem de 1 a 100, a resposta é a mesma, 20. O 0 não contribui com nenhum dígito 9 de qualquer forma. Então não precisa se preocupar com esses detalhes fronteira em problemas simples assim. Se você precisa dessa contagem em produção, não confie em cálculo manual. Um pequeno loop é suficiente e leva menos de um milissegundo mesmo para intervalos enormes. Em SQL, se o dado já está num campo inteiro, você pode usar expressões com módulo e divisão para extrair cada dígito, mas performance cai se o volume for alto — nesse caso, uma função de tabela ou processamento em lote no aplicativo é melhor.
Eu costumo recomendar que as pessoas visualizem os números em duas colunas antes de contar. Coluna das dezenas e coluna das unidades. Fica evidente visualmente onde o 9 aparece e evita aquele erro de contagem apressada que todo mundo comete na primeira vez.