Цифровой корень (также повторяющаяся цифровая сумма) положительного целого числа - это (однозначное число) значение, полученное в результате итеративного процесса суммирования цифр на каждой итерации, используя результат предыдущей итерации для вычисления суммы цифр. Процесс продолжается до достижения однозначного числа.
Например, цифровой корень 65536 равен 7 , потому что 6 + 5 + 5 + 3 + 6 = 25 и 2 + 5 = 7 .
Сортировка всех цифровых корней не имеет особого смысла, поскольку она будет начинаться с бесконечного числа 1 с.
Вместо этого мы создадим списки всех однозначных целых чисел вместе с их цифровыми корнями, затем все двузначные числа вместе с их цифровыми корнями, затем тройные, четверные и так далее.
Теперь для каждого из этих списков мы отсортируем его так, чтобы сначала появились все целые числа с цифровыми корнями, равными 1 , затем все целые числа с цифровыми корнями, равными 2, и так далее. Сортировка будет стабильной, так что список целых чисел с определенными цифровыми корнями должен быть в порядке возрастания после сортировки.
Наконец, мы объединим эти списки в одну последовательность. Эта последовательность начинается со всех однозначных чисел, затем со всех двузначных чисел (отсортированных по их цифровому корню), затем со всех трехзначных чисел и так далее.
Вызов:
Возьмите положительное целое число n в качестве входных данных и выведите n -ое число в последовательности, описанной выше. Вы можете выбрать, является ли список 0 -индексированным 1- индексированным.
Последовательность выглядит следующим образом:
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, ...
Тестовые случаи:
Тестовые случаи 1-индексированы.
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
Проще скопировать:
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
Разъяснения:
- Вы не можете вывести все n первых элементов. Вы должны только вывести n 'th.
- Код должен теоретически работать для всех целых чисел вплоть до 10 ^ 9 , но это нормально, если он истекает в TIO (или других интерпретаторах с ограничениями по времени) для входных данных, больших 999 .
- Пояснения приветствуются.
Это код-гольф , поэтому выигрывает самый короткий код на каждом языке! Не расстраивайтесь от других решений на языке, на котором вы хотите играть в гольф, даже если они короче, чем вы можете управлять!