Wenn wir eine Fibonacci-ähnliche Folge als f k (n) = (f k (n-1) + f k (n-2))% k definieren , ist die Folge für eine ganze Zahl k (wobei % der Modulo-Operator ist) wird notwendigerweise zyklisch sein, weil es nur k 2 verschiedene Werte für (f k (n-1), f k (n-2)) gibt . Da dieser Zyklus in der Regel nicht alle möglichen Wertepaare enthält, kann es in Abhängigkeit von den beiden Startwerten f k (0) und f k (1) zu unterschiedlichen Zyklen kommen. Zum Beispiel für k = 2Abhängig von den ersten beiden Werten haben wir die folgenden vier Möglichkeiten:
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, ...
Aufgrund der zyklischen Natur der Sequenzen gibt es hier eigentlich nur zwei grundlegend unterschiedliche Sequenzen mit den Umlaufbahnen (0) und (0, 1, 1) . Schauen wir uns k = 3 an :
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, ...
Auch hier gibt es nur zwei verschiedene Umlaufbahnen: (0) und (0, 1, 1, 2, 0, 2, 2, 1) .
Für höhere k erhalten wir möglicherweise mehr Umlaufbahnen, aber sie fallen immer noch in eine vergleichsweise kleine Anzahl von Klassen. Zum Beispiel ergibt k = 4 die vier Bahnen (0) , (0,1,1,2,3,1) , (0, 2, 2) , (0, 3, 3, 2, 1, 3) und k = 5 die drei Bahnen (0) , (0, 1, 1, 2, 3, 0, 3, 3, 1, 4, 0, 4, 4, 3, 2, 0, 2, 2, 4, 1) und (1, 3, 4, 2) .
Ihre Aufgabe bei dieser Herausforderung ist es, zu berechnen, wie viele Umlaufbahnen die Sequenz für ein gegebenes k erzeugt . Dies ist OEIS A015134 . Hier sind die ersten 100 Werte (ab 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
Stellen Sie sicher, dass k = 11 ist. Dies ist die erste Eingabe, die mehr als k Umlaufbahnen liefert .
Regeln
Sie erhalten eine positive Ganzzahl k und sollten A015134 (k) ausgeben .
Sie können ein Programm oder eine Funktion schreiben und eine der Standardmethoden zum Empfangen von Eingaben und zum Bereitstellen von Ausgaben verwenden.
Sie können jede Programmiersprache verwenden , aber beachten Sie, dass diese Lücken standardmäßig verboten sind.
Das ist Code-Golf , also gewinnt die kürzeste gültige Antwort - gemessen in Bytes .