The Fibonacci urutan adalah urutan baik tahu di mana setiap entri adalah jumlah dari dua sebelumnya dan dua entri pertama adalah 1. Jika kita mengambil modulo setiap istilah dengan konstan urutan akan menjadi periodik. Sebagai contoh jika kita memutuskan untuk menghitung urutan mod 7 kita akan mendapatkan yang berikut:
1 1 2 3 5 1 6 0 6 6 5 4 2 6 1 0 1 1 ...
Ini memiliki periode 16. Urutan terkait, yang disebut urutan Pisano , didefinisikan sedemikian rupa sehingga a(n)
merupakan periode urutan fibonacci ketika dihitung modulo n.
Tugas
Anda harus menulis sebuah program atau fungsi yang ketika diberikan n
akan menghitung dan mengeluarkan periode mod urutan Fibonacci n
. Itu adalah istilah ke-n dalam urutan Pisano.
Anda hanya harus mendukung bilangan bulat pada rentang tersebut 0 < n < 2^30
Ini adalah kompetisi kode-golf sehingga Anda harus berusaha meminimalkan ukuran kode sumber Anda karena dinilai oleh byte.
Uji kasus
1 -> 1
2 -> 3
3 -> 8
4 -> 6
5 -> 20
6 -> 24
7 -> 16
8 -> 12
9 -> 24
10 -> 60
11 -> 10
12 -> 24
f(i),f(i+1)
dapat mengambil paling banyak n^2
nilai mod n
. Dengan demikian, n
terbatas pada akhirnya 2^30
dapat menghasilkan periode hingga 2^60
. Membatasi n <= 2^16
akan memberi P(n) <= 2^32
.
f(i+2) = f(i+1)+f(i)
, sehingga 'keadaan' dari perulangan mesin selama periode tersebut dapat dijelaskan dengan sepasang integer mod n
. Ada paling banyak n^2
negara bagian, jadi periode paling banyak n^2
. Oh! Wikipedia mengklaim bahwa periode tersebut paling banyak 6n
. Nevermind my triviality.