본문 바로가기
Programming/Project Euler

510. 프로젝트 오일러 #510 : 원의 접선

by 작은별하나 2015. 4. 22.
반응형

중학수학 시절에 기하가 나오면, 

보조선만 잘 그리면, 기하 문제는 왠만하면 풀린다는 것이죠.


이 문제도 역시 보조선을 잘 그리면 될거라고 생각합니다.


보조선을 그린 이미지를 보시면,



원 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

댓글