No.3037 Restricted Lucas (Hard)

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 256 MB / スペシャルジャッジ問題 (複数の解が存在する可能性があります)
タグ : / 解いたユーザー数 22
作問者 : cielciel

0 ProblemId : 2167 / 出題時の順位表

問題文

リュカ数列とは、
L(0)=2,L(1)=1,L(2)=3,L(3)=4,L(4)=7,...
のようなL(N+2)=L(N)+L(N+1)となる数列である。
このN項目を、1000000007で割った余りを求めよ。ただし以下の文字をソースコードに記述することは禁止される。

0 1 2 3 4 5 6 7 8 9 " ' \ * / % + -

時間制限は同じですが、T(ケース数)の上限が大幅に低く設定されています。

入力

T
N1
N2
…
NT

T: ケース数
Ni (1<=i<=T): 求めるべきリュカ数列の項数

1 <= T <= 10
1 <= Ni <= 2000000000

出力

1行ごとに、リュカ数列のNi項目を1000000007で割った余りを出力せよ。

最後に改行してください。

サンプル

サンプル1
入力
3
10
43
2000000000
出力
123
969323029
2207

提出ページヘ
下のフォームでの入力は、テキストボックスにフォーカスがない場合は、(Onにしている場合)ショートカットキー・スマートサブミットの影響を受けるので、必要なら提出ページに遷移してください。

言語
問題によって提出できない言語があります。参考
ソースコード
ソースコードのテキストボックスに文字がある場合はファイルは無視されます。
テキストボックスで提出するとCR(\r)が除去されますが、ファイルで提出すると除去されません。