A raiz digital (também soma digital repetida) de um número inteiro positivo é o valor (um dígito) obtido por um processo iterativo de soma de dígitos, em cada iteração usando o resultado da iteração anterior para calcular uma soma de dígitos. O processo continua até que um número de um dígito seja alcançado.
Por exemplo, a raiz digital de 65536 é 7 , porque 6 + 5 + 5 + 3 + 6 = 25 e 2 + 5 = 7 .
Classificar todas as raízes digitais não faz muito sentido, uma vez que começaria com infinitos 1 s.
Em vez disso, criaremos listas de todos os números inteiros de um dígito, juntamente com suas raízes digitais, depois todos os números de dois dígitos, juntamente com suas raízes digitais, depois os triplos, quádruplos e assim por diante.
Agora, para cada uma dessas listas, classificaremos para que todos os números inteiros com raízes digitais de 1 apareçam primeiro, depois todos os números inteiros com raízes digitais de 2 e assim por diante. A classificação será estável, de modo que a lista de números inteiros com determinadas raízes digitais deve estar em ordem crescente após a classificação.
Por fim, concatenaremos essas listas em uma única sequência. Essa sequência começará com todos os números de um dígito, depois todos os números de dois dígitos (classificados por sua raiz digital), depois todos os números de três dígitos e assim por diante.
Desafio:
Pegue um número inteiro positivo n como entrada e imprima o número n- ésimo na sequência descrita acima. Você pode escolher se a lista é 0 - indexada a 1 - indexada.
A sequência é assim:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 19, 28, 37, 46, 55, 64, 73, 82, 91, 11, 20, 29 ...
72, 81, 90, 99, 100, 109, 118, ...
981, 990, 999, 1000, 1009, 1018, 1027, ...
Casos de teste:
Os casos de teste são 1 indexados.
n f(n)
9 9
10 10
11 19
40 13
41 22
42 31
43 40
44 49
45 58
600 105
601 114
602 123
603 132
604 141
605 150
4050 1453
4051 1462
4052 1471
4053 1480
4054 1489
4055 1498
Mais fácil de copiar:
n = 9, 10, 11, 40, 41, 42, 43, 44, 45, 600, 601, 602, 603, 604, 605, 4050, 4051, 4052, 4053, 4054, 4055,
f(n) = 9, 10, 19, 13, 22, 31, 40, 49, 58, 105, 114, 123, 132, 141, 150, 1453, 1462, 1471, 1480, 1489, 1498
Esclarecimentos:
- Você não pode produzir todos os n primeiros elementos. Você deve apenas produzir o n 'ésimo.
- Teoricamente, o código deve funcionar para todos os números inteiros até 10 ^ 9 , mas não há problema se o tempo limite exceder o TIO (ou outros intérpretes com restrições de tempo) para entradas maiores que 999 .
- As explicações são incentivadas.
É código-golfe , então o código mais curto em cada idioma vence! Não desanime com outras soluções no idioma em que deseja jogar golfe, mesmo que sejam menores do que o que você pode gerenciar!