Якщо ми визначимо послідовність, що нагадує Фібоначчі, як f k (n) = (f k (n-1) + f k (n-2))% k , для деякого цілого k (де % - оператор модуля), послідовність обов'язково буде циклічним, оскільки є лише k 2 різних значень для (f k (n-1), f k (n-2)) . Однак цей цикл зазвичай не включає всі можливі пари значень, тому залежно від двох вихідних значень f k (0) та f k (1) , ми можемо отримати різні цикли. Наприклад, при k = 2, ми маємо наступні чотири можливості, залежно від перших двох значень:
0, 0, 0, 0, 0, 0, 0, 0, 0, ...
0, 1, 1, 0, 1, 1, 0, 1, 1, ...
1, 0, 1, 1, 0, 1, 1, 0, 1, ...
1, 1, 0, 1, 1, 0, 1, 1, 0, ...
Через циклічну природу послідовностей тут є лише дві принципово різні послідовності з орбітами (0) та (0, 1, 1) . Подивимося на k = 3 :
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...
0, 1, 1, 2, 0, 2, 2, 1, 0, 1, 1, 2, 0, 2, 2, 1, ...
0, 2, 2, 1, 0, 1, 1, 2, 0, 2, 2, 1, 0, 1, 1, 2, ...
1, 0, 1, 1, 2, 0, 2, 2, 1, 0, 1, 1, 2, 0, 2, 2, ...
1, 1, 2, 0, 2, 2, 1, 0, 1, 1, 2, 0, 2, 2, 1, 0, ...
1, 2, 0, 2, 2, 1, 0, 1, 1, 2, 0, 2, 2, 1, 0, 1, ...
2, 0, 2, 2, 1, 0, 1, 1, 2, 0, 2, 2, 1, 0, 1, 1, ...
2, 1, 0, 1, 1, 2, 0, 2, 2, 1, 0, 1, 1, 2, 0, 2, ...
2, 2, 1, 0, 1, 1, 2, 0, 2, 2, 1, 0, 1, 1, 2, 0, ...
Знову лише дві різні орбіти: (0) і (0, 1, 1, 2, 0, 2, 2, 1) .
Для вищого k ми можемо отримати більше орбіт, але вони все одно потраплять у порівняно невелику кількість класів. Наприклад, k = 4 дає чотири орбіти (0) , (0,1,1,2,3,1) , (0, 2, 2) , (0, 3, 3, 2, 1, 3) і k = 5 три орбіти (0) , (0, 1, 1, 2, 3, 0, 3, 3, 1, 4, 0, 4, 4, 3, 2, 0, 2, 2, 4, 1) і (1, 3, 4, 2) .
Ваше завдання в цьому завданні - обчислити, скільки орбіт генерує послідовність для даного k . Це OEIS A015134 . Ось перші 100 значень (починаючи з k = 1 ):
1, 2, 2, 4, 3, 4, 4, 8, 5, 6, 14, 10, 7, 8, 12, 16, 9, 16, 22, 16,
29, 28, 12, 30, 13, 14, 14, 22, 63, 24, 34, 32, 39, 34, 30, 58, 19,
86, 32, 52, 43, 58, 22, 78, 39, 46, 70, 102, 25, 26, 42, 40, 27, 52,
160, 74, 63, 126, 62, 70, 63, 134, 104, 64, 57, 78, 34, 132, 101, 60,
74, 222, 37, 38, 62, 328, 89, 64, 82, 124, 41, 86, 42, 172, 75, 44,
184, 178, 181, 132, 82, 180, 99, 140, 104, 246, 49, 50, 114, 76
Обов’язково перевірте k = 11 , що є першим входом, який дає більше k орбіт.
Правила
Вам дано додатне ціле число k і має вивести A015134 (k) .
Ви можете написати програму або функцію і використовувати будь-який із стандартних методів отримання вводу та надання виводу.
Ви можете використовувати будь-яку мову програмування , але зауважте, що ці лазівки за замовчуванням заборонені.
Це код-гольф , тому найкоротший вірний відповідь - вимірюється в байтах - виграє.