Кожне число можна представити, використовуючи нескінченно довгу послідовність залишку. Наприклад, якщо ми беремо число 7 і виконуємо 7mod2
, то 7mod3
, тоді 7mod4
і так далі ми отримуємо 1,1,3,2,1,0,7,7,7,7,....
.
Однак нам потрібна найкоротша можлива подальша частина, яка все ще може бути використана для того, щоб відрізнити її від усіх нижчих чисел. Повторне використання 7 [1,1,3]
- це найкоротша послідовність, оскільки всі попередні підпорядкування не починаються з [1,1,3]
:
0: 0,0,0,0...
1: 1,1,1,1...
2: 0,2,2,2...
3: 1,0,3,3...
4: 0,1,0,4...
5: 1,2,1,0...
6: 0,0,2,1...
Зверніть увагу, що [1,1]
це не працює для представлення 7, оскільки його також можна використовувати для представлення 1. Однак слід вивести [1]
з введенням 1.
Введення-виведення
Вхідне значення - це негативне ціле число. Ви повинні вивести послідовність або список послідовності мінімальної довжини залишків, як визначено вище.
Тестові приклади:
0: 0
1: 1
2: 0,2
3: 1,0
4: 0,1
5: 1,2
6: 0,0,2
7: 1,1,3
8: 0,2,0
9: 1,0,1
10: 0,1,2
11: 1,2,3
12: 0,0,0,2
30: 0,0,2,0
42: 0,0,2,2
59: 1,2,3,4
60: 0,0,0,0,0,4
257: 1,2,1,2,5,5
566: 0,2,2,1,2,6,6
1000: 0,1,0,0,4,6,0,1
9998: 0,2,2,3,2,2,6,8,8,10
9999: 1,0,3,4,3,3,7,0,9,0
Ось перші 10 000 послідовностей , якщо вам це цікаво (номери рядків відключені на 1).
Це кодовий гольф , тому робіть його якомога коротше на улюбленій мові. Підроблені бонусні бали за будь-які швидкі відповіді!