どーも、みつおです。
フィボナッチ数を各項で計算してたら、計算時間が凄いことになるよ。
問題
フィボナッチ数列の項は前の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