반응형
중학수학 시절에 기하가 나오면,
보조선만 잘 그리면, 기하 문제는 왠만하면 풀린다는 것이죠.
이 문제도 역시 보조선을 잘 그리면 될거라고 생각합니다.
보조선을 그린 이미지를 보시면,
원 A에서 선 L에 수선을 내리고, 원B에서 선 L에 수선을 내리고, 원 A의 중심에서 L과 편행하고 선을 긋고, 원 C의 중심에서 L과 평행하게 선을 긋습니다.
그러면 그림과 같이 A, B, C 라는 삼각형을 얻습니다.
이 문제의 풀이는 바로 이 세개의 직각삼각형에서 출발합니다. 직각삼각형이므로 당연히 피타고라스 법칙이 성립합니다. 그런데, 삼각형 A의 밑변, 삼각형 B의 밑변, 삼각형 C의 밑변이 자연수라고 생각할 수 있는 근거가 그림상에는 전혀 없습니다. 당연히 A, B의 밑변의 합은 C의 밑변의 길이와 같다는 것은 알 수 있습니다.
제일 먼저 밝혀야 하는 것은 각 삼각형을 각각 원의 반지름으로 표시하는 것이고요.
두번째에는 밑변이 자연수일지 아닐지에 대한 판단을 해야 합니다.
이것만 제대로 하신다면, 시간이 좀 오래 걸리더라도 답을 낼 수 있습니다. 아마 오래 걸린다해도 몇분~몇시간정도일거라 생각합니다. 속도를 개선하는 것은 위의 두가지만 가지고는 낼 수 없습니다.
오일러 사이트에는 S(100)의 값만 제시되어서, 알고리즘이 올바른지 판단하기 힘듭니다.
여기에 몇개의 값을 더 적습니다.
S(100) = 3072
S(1000) = 311709
S(10000) = 31418891
728x90
'Programming > Project Euler' 카테고리의 다른 글
515. 프로젝트 오일러 #515 : 불협화음 숫자들 (0) | 2015.05.12 |
---|---|
[C/C++] 프로젝트 오일러 #508 : \(i-1\) 진법 표시하기(수학) (0) | 2015.05.02 |
40. 프로젝트 오일러 #40 : 챔퍼나운 수 (0) | 2015.04.21 |
39. 프로젝트 오일러 #39 : 길이가 정수인 직각삼각형 (0) | 2015.04.20 |
38. 프로젝트 오일러 #38 : 팬디지털 곱하기 (0) | 2015.04.20 |
댓글