Jeśli zdefiniujemy sekwencję podobną do Fibonacciego jako f k (n) = (f k (n-1) + f k (n-2))% k , dla niektórych liczb całkowitych k (gdzie % jest operatorem modulo), sekwencja będzie koniecznie cykliczne, ponieważ istnieją tylko k 2 różnych wartości dla (f k (n-1), f k (n-2)) . Jednak ten cykl zwykle nie obejmuje wszystkich możliwych par wartości, więc w zależności od dwóch początkowych wartości f k (0) i f k (1) , możemy uzyskać różne cykle. Na przykład dla k = 2, mamy następujące cztery możliwości, w zależności od dwóch pierwszych wartości:
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, ...
Ze względu na cykliczną naturę sekwencji, tak naprawdę istnieją tutaj tylko dwie zasadniczo różne sekwencje, z orbitami (0) i (0, 1, 1) . Spójrzmy na 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, ...
Ponownie istnieją tylko dwie różne orbity: (0) i (0, 1, 1, 2, 0, 2, 2, 1) .
Dla wyższych k możemy uzyskać więcej orbit, ale nadal będą one należeć do stosunkowo niewielkiej liczby klas. Na przykład k = 4 daje cztery orbity (0) , (0,1,1,2,3,1) , (0, 2, 2) , (0, 3, 3, 2, 1, 3) i k = 5 trzy orbity (0) , (0, 1, 1, 2, 3, 0, 3, 3, 1, 4, 0, 4, 4, 3, 2, 0, 2, 2, 4, 1) i (1, 3, 4, 2) .
Twoim zadaniem w tym wyzwaniu jest obliczenie, ile orbit generuje sekwencja dla danego k . To jest OEIS A015134 . Oto pierwsze 100 wartości (od 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
Pamiętaj, aby sprawdzić k = 11 , która jest pierwszym wejściem, który daje więcej niż k orbit.
Zasady
Otrzymałeś dodatnią liczbę całkowitą k i powinieneś wyprowadzić A015134 (k) .
Możesz napisać program lub funkcję i użyć dowolnej ze standardowych metod odbierania danych wejściowych i dostarczania danych wyjściowych.
Możesz używać dowolnego języka programowania , ale pamiętaj, że te luki są domyślnie zabronione.
To jest golf golfowy , więc wygrywa najkrótsza ważna odpowiedź - mierzona w bajtach .