Si nous définissons une séquence de type Fibonacci comme f k (n) = (f k (n-1) + f k (n-2))% k , pour un entier k (où % est l'opérateur modulo), la séquence sera nécessairement cyclique, car il n'y a que k 2 valeurs différentes pour (f k (n-1), f k (n-2)) . Cependant, ce cycle n'inclut généralement pas toutes les paires de valeurs possibles, donc en fonction des deux valeurs de départ f k (0) et f k (1) , nous pouvons obtenir des cycles différents. Par exemple, pour k = 2 , nous avons les quatre possibilités suivantes, en fonction des deux premières valeurs:
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, ...
En raison de la nature cyclique des séquences, il n'y a vraiment que deux séquences fondamentalement différentes ici, avec les orbites (0) et (0, 1, 1) . Regardons 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, ...
Encore une fois, il n'y a que deux orbites différentes: (0) et (0, 1, 1, 2, 0, 2, 2, 1) .
Pour des k plus élevés, nous pourrions obtenir plus d'orbites, mais elles tomberont toujours dans un nombre relativement petit de classes. Par exemple, k = 4 donne les quatre orbites (0) , (0,1,1,2,3,1) , (0, 2, 2) , (0, 3, 3, 2, 1, 3) et k = 5 les trois orbites (0) , (0, 1, 1, 2, 3, 0, 3, 3, 1, 4, 0, 4, 4, 3, 2, 0, 2, 2, 4, 1) et (1, 3, 4, 2) .
Votre tâche dans ce défi est de calculer le nombre d'orbites générées par la séquence pour un k . Il s'agit d' OEIS A015134 . Voici les 100 premières valeurs (à partir de 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
Assurez-vous de vérifier k = 11 , qui est la première entrée qui produit plus de k orbites.
Règles
On vous donne un entier positif k et vous devriez sortir A015134 (k) .
Vous pouvez écrire un programme ou une fonction et utiliser l'une des méthodes standard de réception d'entrée et de sortie.
Vous pouvez utiliser n'importe quel langage de programmation , mais notez que ces failles sont interdites par défaut.
Il s'agit de code-golf , donc la réponse valide la plus courte - mesurée en octets - l'emporte.