どーも、みつおです。
フィボナッチ数を各項で計算してたら、計算時間が凄いことになるよ。
問題
フィボナッチ数列の項は前の2つの項の和である. 最初の2項を 1, 2 とすれば, 最初の10項は以下の通りである.
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …数列の項の値が400万以下の, 偶数値の項の総和を求めよ.
Note:この問題は最近更新されました. お使いのパラメータが正しいかどうか確認してください.
出典:Problem 2
解答
using System;
namespace Problem2
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Solve());
Console.ReadLine();
}
private static int Solve()
{
int ret = 0;
//フィボナッチ数の定義 f(n) = f(n-1) + f(n-2)
int f0 = 0;
int f1 = 1;
int f2 = f1 + f0;
//数列の項(400万)
int kou = 4000000;
//項が400万までループ
while(f2 < kou)
{
//偶数値の項の総和
if (f2 % 2 == 0) ret += f2;
//フィボナッチ数を更新
f0 = f1;
f1 = f2;
f2 = f1 + f0;
}
return ret;
}
}
}
出力
4613732


コメント