フィボナッチ数列をf k(n)=(f k(n-1)+ f k(n-2))%kとして定義する場合、整数k(%はモジュロ演算子)に対して、シーケンス(f k(n-1)、f k(n-2))にはk 2個の異なる値しかないため、必然的に周期的です。ただし、このサイクルには通常、可能なすべての値のペアが含まれているわけではないため、2つの開始値f k(0)およびf k(1)に応じて、異なるサイクルが得られる場合があります。たとえば、k = 2の場合、最初の2つの値に応じて、次の4つの可能性があります。
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 )の 2つの基本的に異なるシーケンスのみが実際にあります。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, ...
繰り返しますが、2つの異なる軌道しかありません:(0)と(0、1、1、2、2、0、2、2、1)。
より高いkの場合、より多くの軌道が得られる可能性がありますが、それらは依然として比較的少数のクラスに分類されます。たとえば、k = 4は4つの軌道を生成します(0) 、(0,1,1,2,3,1) 、(0、2、2) 、(0、3、3、2、1、3)及びK = 5 3つの軌道(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)を出力するはずです。
プログラムまたは関数を作成し、入力を受け取って出力を提供する標準的な方法を使用できます。
任意のプログラミング言語を使用できますが、これらの抜け穴はデフォルトでは禁止されていることに注意してください。
これはcode-golfであるため、バイト単位で測定された最短の有効な回答が勝ちます。