개발/문제풀이
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; } |
요약.
겹치는 수에 대해 주의하자.
'개발 > 문제풀이' 카테고리의 다른 글
Code. 프로젝트 오일러. KR 6번. C++ (0) | 2016.09.25 |
---|---|
Code. 프로젝트 오일러. KR 5번. C++ (0) | 2016.09.25 |
Code. 프로젝트 오일러. KR 4번. C++ (0) | 2016.09.25 |
Code. 프로젝트 오일러. KR 3번. C++ (0) | 2016.09.24 |
Code. 프로젝트 오일러. KR 2번. C++ (0) | 2016.09.19 |