ブルーブリッジ杯入門訓練
4350 ワード
ソースリンク:http://lx.lanqiao.cn/problem.page?gpid=T4
入門トレーニング:Fibonacci数列Description
Fibonacci数列の転送式はFn=Fn-1+Fn-2で、F 1=F 2=1です.nが大きい時はFnもとても大きいです.今はFnが10007で割った余りはいくらですか?Input入力説明:入力は整数nを含みます.入力例:10出力説明:1行を出力し、1つの整数を含み、Fnが10007で割った余りを表します.説明:この問題では、答えは1000 7,000の余りをFnで割る必要がありますので、この剰余を計算すればいいです.Fnの正確な値を先に計算してから、計算の結果を10007で剰余を除いて、直接に剰余を計算するのは、元の数を計算してから取るより簡単です.出力例:55時間制限:1.0 sメモリ制限:25.0 MB 1<=n==1,000,000.
重点語句:で剰余を計算すれば です.は、Fnの正確な値を計算する必要がない .
問題解決の考え方:
入門トレーニング:Fibonacci数列Description
Fibonacci数列の転送式はFn=Fn-1+Fn-2で、F 1=F 2=1です.nが大きい時はFnもとても大きいです.今はFnが10007で割った余りはいくらですか?Input入力説明:入力は整数nを含みます.入力例:10出力説明:1行を出力し、1つの整数を含み、Fnが10007で割った余りを表します.説明:この問題では、答えは1000 7,000の余りをFnで割る必要がありますので、この剰余を計算すればいいです.Fnの正確な値を先に計算してから、計算の結果を10007で剰余を除いて、直接に剰余を計算するのは、元の数を計算してから取るより簡単です.出力例:55時間制限:1.0 sメモリ制限:25.0 MB 1<=n==1,000,000.
重点語句:
問題解決の考え方:
:(a + b) % c == a % c + b % c
you can try it:
(3 + 4) % 2 = 1
3 % 2 = 1 plus 4 % 2 = 0 is 1, so it's right!
コードの展示#include
int main(void)
{
int i, index, i_num;
int F_num1 = 1, F_num2 = 1;
scanf("%d", &i_num);//n n
if(i_num == 1 || i_num == 2)
printf("%d
", F_num1);
else if(i_num >= 3)
{
for(i = 3; i <= i_num; i ++)
{
index = F_num2;
F_num2 = (F_num1 + F_num2) % 10007;//
F_num1 = index;
}
printf("%d
", F_num2);
}
return 0;
分からないことがあれば、下のメッセージを歓迎します.