반응형
문제 2번
피보나치(Fibonacci) 수열의 각 항은 바로 앞의 항 두 개를 더한 것입니다. 1과 2로 시작하는 경우 이 수열은 아래와 같습니다.
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
4백만 이하의 짝수 값을 갖는 모든 피보나치 항을 더하면 얼마가 됩니까?
접근방법
1. 첫번째 항은 1, 두번째 항은 2, 세번재 항부터는 이전 두개의 항을 더한 값이 나오는 피보나치 수열 함수를 만든다.
2. while 함수를 이용하여 피보나치 함수 값이 400만보다 작고,
3. 피보나치 함수 값이 2로 나눠지면 result에 저장한다.
#include <iostream>
using namespace std;
int fibo(int n)
{
if (n == 1)
return 1;
else if (n == 2)
return 2;
else
return fibo(n - 1) + fibo(n - 2);
}
int main()
{
int result = 0;
int i = 1;
while (fibo(i) <= 4000000)
{
if (fibo(i) % 2 == 0)
{
result += fibo(i);
//cout << i << " " << fibo(i) << " " << result << endl;
}
i++;
}
cout << "Answer is : " << result << endl;
return 0;
}
참고
https://github.com/mannlim/ProjectEuler
반응형
'알고리즘 문제 & 프로그래밍 > C++' 카테고리의 다른 글
[C++]프로젝트 오일러 4번 문제&풀이 (세자리 수를 곱해 만들 수 있는 가장 큰 대칭수) (0) | 2020.11.18 |
---|---|
[C++]프로젝트 오일러 3번 문제&풀이 (가장 큰 소인수 구하기) (0) | 2020.11.17 |
[C++]프로젝트 오일러 1번 문제&풀이 (1000보다 작은 자연수 중에서 3 또는 5의 배수를 모두 더하면?) (0) | 2020.11.17 |
[C++]프로젝트 오일러 7번 문제&풀이 (10001번째의 소수) (0) | 2020.11.16 |
[C++]백준 1110번 더하기 사이클 문제 (while문) (0) | 2020.11.10 |
댓글