問題一覧 > 通常問題

No.194 フィボナッチ数列の理解(1)

レベル : / 実行時間制限 : 1ケース 5.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 116
作問者 : kmjp
11 ProblemId : 381 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2018-03-10 02:19:56

問題文

yuki君はyukicoderで門松列に対しスーパーリッチ門松列というものがあることを学んだ。
フィボナッチ数列に興味を持ったyuki君は、同様にスーパーフィボナッチ数列というものを考えてみた。

スーパーフィボナッチ数列は、最初のN項A1,A2,...,ANから生成される数列であり、第k項の値F(k)は、直前のN項の和となる。
厳密に書くと、F(k)は以下のように定義される。
- kNならば F(k)=Ak
- k>Nならば F(k)=F(k1)+F(k2)+...+F(kN)=1iNF(ki)

yuki君は大きな整数Kに対し、F(K)及びS(K)=1kKF(k)がどうなるか気になった。
F(K)およびS(K)の値の109+7の剰余を答えよ。

入力

N K
A1 A2 ... AN

N,K,Aiはいずれも整数である。
本問題はテストケースごとに以下の制限がある。
testcase01~10: 2N104,N<K106 (難易度★★相当)
testcase11~20: 2N30,N<K1012 (難易度★★★相当)
いずれのケースも、0Ai9は共通である。

ヒント:両ケース群に対し、1つのアプローチで挑むのが良いとは限らない。

出力

F(K)およびS(K)の値を求め、それぞれ109+7の剰余を取った値を空白区切りで1行で答えよ。

サンプル

サンプル1
入力
2 5
1 1
出力
5 12

このスーパーフィボナッチ数列は、通常のフィボナッチ数列と同じである。
この数列の最初の5項は1, 1, 2, 3, 5である。

サンプル2
入力
5 10
1 2 3 4 5
出力
214 438

このスーパーフィボナッチ数列の最初の10項は、1, 2, 3, 4, 5, 15, 29, 56, 109, 214である。

サンプル3
入力
30 987654321012
3 1 4 1 5 9 2 6 5 3 5 8 9 7 9 3 2 3 8 4 6 2 6 4 3 3 8 3 2 7
出力
923032656 920866414

このサンプルケースの制限は、testcase11~20に相当する。

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