[C++] プロジェクトオイラー Problem2

C++

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

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …

数列の項の値が400万以下の, 偶数値の項の総和を求めよ.

ソースコード

#include <iostream>
#include <cmath>

using namespace std;

int main(void) {

  int a = 1;
  int b = 1;
  long long int sum = 0;
  while (sum < 400 * pow(10, 4)) {

    int c = a + b;
    a = b;
    b = c;

    if(c % 2 == 0)
      sum += c;
  }

  cout << sum << endl;

}

/* 実行結果

4613732

*/

答えは4613732でした。

普通のint型ではオーバーフローしたので、long long int 型にしました。

コメント

タイトルとURLをコピーしました