Jika kita mendefinisikan Fibonacci seperti urutan sebagai f k (n) = (f k (n-1) + f k (n-2))% k , untuk suatu bilangan bulat k (di mana % adalah operator Modulo), urutan akan selalu siklik, karena hanya ada k 2 nilai yang berbeda untuk ( fk (n-1), fk (n-2)) . Namun, siklus ini biasanya tidak termasuk semua pasangan yang mungkin dari nilai-nilai, jadi tergantung pada dua nilai mulai f k (0) dan f k (1) , kita mungkin mendapatkan siklus yang berbeda. Misalnya, untuk k = 2, kami memiliki empat kemungkinan berikut, tergantung pada dua nilai pertama:
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, ...
Karena sifat siklik dari urutan, sebenarnya hanya ada dua urutan yang berbeda secara fundamental di sini, dengan orbit (0) dan (0, 1, 1) . Mari kita lihat 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, ...
Sekali lagi, hanya ada dua orbit yang berbeda: (0) dan (0, 1, 1, 2, 0, 2, 2, 1) .
Untuk k yang lebih tinggi kita mungkin mendapatkan lebih banyak orbit, tetapi mereka masih akan jatuh ke dalam sejumlah kecil kelas yang sebanding. Misalnya k = 4 menghasilkan empat orbit (0) , (0,1,1,2,3,1) , (0, 2, 2) , (0, 3, 3, 2, 1, 3) dan k = 5 tiga orbit (0) , (0, 1, 1, 2, 3, 0, 3, 3, 1, 4, 0, 4, 4, 3, 2, 0, 2, 2, 2, 4, 1) dan (1, 3, 4, 2) .
Tugas Anda dalam tantangan ini adalah untuk menghitung berapa banyak orbit yang dihasilkan oleh urutan untuk k . Ini adalah OEIS A015134 . Berikut adalah 100 nilai pertama (mulai dari 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
Pastikan untuk memeriksa k = 11 , yang merupakan input pertama yang menghasilkan lebih dari k orbit.
Aturan
Anda diberi bilangan bulat positif k dan harus menampilkan A015134 (k) .
Anda dapat menulis program atau fungsi dan menggunakan salah satu metode standar untuk menerima input dan memberikan output.
Anda dapat menggunakan bahasa pemrograman apa pun , tetapi perhatikan bahwa celah ini dilarang secara default.
Ini adalah kode-golf , sehingga jawaban terpendek yang valid - diukur dalam byte - menang.