問題一覧 > 数学的知識問題

No.8038 フィボナッチ数列の周期

レベル : / 実行時間制限 : 1ケース 3.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 9
作問者 : 👑 testestest
0 ProblemId : 1314 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2025-03-04 09:55:51

問題文

F0=0,  F1=1,  Fi=Fi1+Fi2 (i2)F_0=0,\ \ F_1=1, \ \ F_i=F_{i-1}+F_{i-2}\ (i\geq2) により定められる数列{Fi}\{F_i\}をフィボナッチ数列という。
フィボナッチ数列のmodM\bmod Mでの周期を109+710^9+7で割った余りを求めよ。

入力

N
p_1 k_1
...
p_N k_N

MMは素因数分解された形で与えられ、M=pikiM=\prod p_i^{k_i}である。
1N10001\leq N\leq 1000:整数
2pi1072\leq p_i \leq 10^7:素数であり、相異なる
1ki10001\leq k_i \leq 1000:整数

テストケースは全部で25個ある。
1smallから始まる7つのテストケースはM107M\leq 10^7を満たす(★2くらい)
2medから始まる9つのテストケースはN20N\leq 20かつ全てのiiについてpi106, ki=1p_i\leq10^6,\ k_i=1を満たす(★3くらい)
3largeから始まる9つのテストケースには追加制約はない(★4くらい)

出力

フィボナッチ数列のmodM\bmod Mでの周期を109+710^9+7で割った余りを出力せよ。
ただし、「フィボナッチ数列{Fi}\{F_i\}modM\bmod Mでの周期」とは次の条件を満たすような正整数nnのうち最小のものを指す。
条件:ある非負整数AAが存在して、AA以上の任意の整数BBに対してFB+n=FBmodMF_{B+n}=F_{B} \bmod Mが成り立つ

サンプル

サンプル1
入力
2
2 2
3 1
出力
24

M=2231=12M=2^2 \cdot 3^1=12である。OEISのA001175によると、mod 12での周期は24になるらしい。
実際に計算すると0,1,1,2,3,5,8,1,9,10,7,5,0,5,5,10,3,1,4,5,9,2,11,1,0,1,1,0,1,1,2,3,5,8,1,9,10,7,5,0,5,5,10,3,1,4,5,9,2,11,1,0,1,1,\ldotsとなり確かにFn+24=FnF_{n+24}=F_nとなっている。
このケースはsmallの追加制約を満たす。

サンプル2
入力
2
97 1
103093 1
出力
10103212

mod 10^7+21での周期は10103212になるらしい。
このケースはmedの追加制約を満たす。

サンプル3
入力
2
9999937 2
9999761 2
出力
650542141

mod 9999396012131709055946713249における周期は96148038578019322985423540になるらしい。

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。