Problem 2
출제 일시 : 2012-01-03 19:11:35
피보나치 수열의 각 항은 바로 앞의 항 두 개를 더한 것이 됩니다. 1과 2로 시작하는 경우 이 수열은 아래와 같습니다.
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
짝수이면서 4백만 이하인 모든 항을 더하면 얼마가 됩니까?
수십번틀렸다
왜냐하면 4백만인데 내가 0을 한개 더줘서 4천만으로 풀고있었기 때문이다..
dp가 익숙해서 dp처럼 풀었는데 굳이 dp를 쓸 필요는 없었다.
#include <bits/stdc++.h>
using namespace std;
#define SIZE 4000001
unsigned int dp[SIZE];
int main(){
memset(dp,0,sizeof(dp));
dp[0]=1;
dp[1]=1;
dp[2]=2;
unsigned int sum=0;
int i=2;
while(dp[i-1]+dp[i-2] < SIZE ){
dp[i] = dp[i-1] + dp[i-2];
if( (dp[i]%2==0)) {sum += dp[i];}
i++;
}
cout<<sum;
return 0;
}