斐波那契数列中的每一项都是前两项的和。由和开始生成的斐波那契数列的前项为:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89,…
考虑该斐波那契数列中不超过四百万的项,求其中为偶数的项之和。
#include <iostream>
using namespace std;
#if 0
int num[1000000];
int main() {
long long ans = 2;
num[1] = 1, num[2] = 2;
for (int i = 3; 1; i++) {
num[i] = num[i - 1] + num[i - 2];
if ((num[i] & 0x1) == 0x0) ans += num[i];
if (num[i] >= 4000000) break;
}
cout << ans << endl;
return 0;
}
#endif
int main() {
long long ans = 0;
int a = 1, b = 2;
while(b <= 4000000) {
if ((b & 0x1) == 0x0) ans += b;
b = a + b;
a = b - a;
}
cout << ans << endl;
return 0;
}