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