개발/문제풀이

Code. 프로젝트 오일러. KR 2번. C++

ordi2016. 9. 19. 19:27

프로젝트 오일러 KR 2번.


피보나치 수열에서 400만 이하이면서 짝수인 항의 합



문제 출처.

http://euler.synap.co.kr/prob_detail.php?id=2



요점.

피보나치 수열을 한.항.씩 올라가면서, 각 항을 짝수인지 체크한다.

그리고 해당 항이 짝수이면 합을 저장하는 변수에 더한다.



풀이 방법.

피보타치수열을 일반화 시켜보면



여기에 초기 값을



으로 문제에서 주었다.


그럼 계속 다음 항으로 넘어가면서 해당 항이 짝수이면 

sum 이라는 변수에 더해주었다.


그리고 피보나치 항이 짝수가 나올 때 마다, 현재 상태를 확인 하기 위해

<합> <이전의 피보나치 항> <현재의 피보나치 항>

을 출력했다.


마지막으로 현재의 피보나치 항이 400만을 넘어가면 반복문을 종료 하였다.




소스 코드.




콘솔.


2 1 2

10 5 8

44 21 34

188 89 144

798 377 610

3382 1597 2584

14328 6765 10946

60696 28657 46368

257114 121393 196418

1089154 514229 832040

4613732 2178309 3524578

=>4613732


느낌.

1) 피보나치 수열을 코딩해보았다.

2) 오보플로우가 발생할까봐 조마조마 했지만 다행히 넘진 않았다.

3) const의 개념과 #define 둘중에 어느게 더 좋은건지 감이 안잡힌다. 공부해봐야겠다.

댓글

개발/문제풀이

Code. 프로젝트 오일러. KR 1번. C++

ordi2016. 9. 18. 19:24

프로젝트 오일러 KR 1번.


1000보다 작은 자연수 중에서 3 또는 5의 배수를 모두 더하면?



문제 출처.

http://euler.synap.co.kr/prob_detail.php?id=1



요점.

제목만 보아도 알 수 있듯이 그냥 그 배수 들을 다 더하면된다.

다만, 3과 5의 공배수를 2번 더하지 않도록 주의하자.




풀이 방법.

1) 이건 1부터 1000까지 훑어가면서 3으로 나누어 떨어지거나, 5로 나누어 떨어지면

이때까지 더했던 변수(sum)에 더한다.


2) "n(n+1)/2"  

즉 합의 공식을 이용해 

"3의 배수 합 + 5의 배수 합 - 15의 배수로 구하여도 된다."




코드 해석.

코드만 봐도 해석은 될 수 있을 것 같다.




요약.

겹치는 수에 대해 주의하자.

댓글

Pmon

뭐든 간에 기록하자

SNS

  • 페이스북아이콘
  • 카카오톡아이콘
  • 트위터아이콘

Lately Post

Lately Comment

VISITED

Today :

Total :