トップページに戻る    次のC++のサンプルへ    前のC++のサンプルへ

Problem2 フィボナッチ数列の偶数の項の総和

問題

フィボナッチ数列の項は前の2つの項の和である。
最初の2項を1,2とすれば、最初の10項は以下の通りである。

1,2,3,5,8,13,21,34,55,89, ...
数列の項が400万を超えない範囲で、偶数の項の総和を求めよ。


ソース

#include <stdio.h>
#include <vector>

void main()
{
    int SumVal = 0;
    std::vector<int> intVec;

    while(true){
        int size=intVec.size();
        if (size == 0) intVec.push_back(1);
        else if (size == 1) intVec.push_back(2);
        else intVec.push_back(intVec[size-2] + intVec[size-1]);

        int LastVal = intVec.back();
        if (LastVal > 4000000) break;
        if (LastVal % 2 == 0) SumVal += LastVal;
    }
    printf("SumVal = %d \n",SumVal);
}


実行結果

SumVal = 4613732


解説

MSDN --- vectorクラスでフィボナッチ数列を順に求めていってます。