問題記述
フィボナッチ漸化式:のFn = FN-1 +のFn -2、 F1 = F2 = 1。
nが比較的大きい場合には、Fnは非常に素晴らしいです、そして今、私たちが知りたい、のFnは10007である数で分割されています。
入力フォーマット
入力は整数nを含んでいます。
出力フォーマット
出力10007の分割のFn剰余を表す整数を含む一行。
説明:この問題では、答えはFnキーを要求することですが10007で割っているので、私たちは限り残りは、のFnの正確な値を計算する必要がなく、その結果を直接計算を引き継ぐために数10007を割ることにより算出されることができるようにこれを把握することができます残りは、多くの場合、最初の元の数を計算し、その後、残りを簡単に取るより。
入力サンプル
10
サンプル出力
55
サンプル入力
22
出力例
7704
のデータサイズと表記
1 <= N <= 1,000,000。
この質問は、再帰的なソリューション、簡単にデータのオーバーフローではないことに注意してください、私たちはループを使用して残りを取り、その後、解決します
#include <iostream>
using namespace std;
int main()
{
int n;int p1=1,p2=1,p3=1;
cin>>n;
if(n!=1&&n!=2)
for(int i=3;i<=n;i++){
p3=(p1+p2)%10007;
p1=p2;
p2=p3;
}
cout<<p3;
return 0;
}