Кожне число можна представити, використовуючи нескінченно довгу послідовність залишку. Наприклад, якщо ми беремо число 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).
Це кодовий гольф , тому робіть його якомога коротше на улюбленій мові. Підроблені бонусні бали за будь-які швидкі відповіді!