개발/문제풀이

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의 배수로 구하여도 된다."




코드 해석.

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
 
int main()
{
    const int limit = 1000;
    const int divider3 = 3;
    const int divider5 = 5;
    int sum = 0;
     
    for (int i = 1; i < limit; i++)
    {
        if ((i % divider3 == 0) || (i % divider5 == 0))
            sum += i;
    }
     
    cout << sum << endl;
     
    return 0;
}




요약.

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

댓글

Pmon

뭐든 간에 기록하자

SNS

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

Lately Post

Lately Comment

VISITED

Today :

Total :