일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 알고리즘 분석의 실례
- 랜덤 순서 배열
- nonhomogeneous linear system
- 빅세타
- 배열 섞기
- itertools
- 일차변환
- Big-Oh 예제
- matrix trnasformations
- trivial solution
- 빅오메가
- nontrivial solution
- matrix fo a linear transformation
- 코틀린 Hello World!
- homogeneous linear system
- 이진 탐색
- NumPy
- matrix-vector product
- recursive algorithms
- Big-Oh notation
- linear dependence
- 빅오 표기법
- solutions of matrix equation
- Big-O 예제
- Big Omega
- Big Theta
- 코틀린 시작하기
- 재귀함수
- python
- one-to-one
- Today
- Total
코딩 연습
프로젝트 오일러 138번 본문
Consider the isosceles triangle with base length, \(b=16\), and legs, \(L=17\).
By using the Pythagorean theorem it can be seen that the height of the triangle, \(h=\sqrt{17^2-8^2}=15\), which is one less than the base length.
With \(b=272\) and \(L=305\), we get \(h=273\), which is one more than the base length, and this is the second smallest isosceles triangle with the property that \(h=b \pm 1\).
Find \(\sum L\) for the twelve smallest isosceles triangles for which \(h=b \pm 1\) and \(b\), \(L\) are positive integers.
위 그림과 같은 밑변의 길이가 \(b\) 이고, 길이가 같은 두 변의 길이가 \(L\) 인 이등변삼각형을 생각해 보자. 만약 \(b=16\) 이고 \(L=17\) 이라면 피타고라스의 정리에 의하여 이 삼각형의 높이 \(h\) 는 \(\sqrt{17^2-8^2}=15\) 가 되는데, 이때 밑변의 길이와 높이의 차는 \(1\) 이 된다.
\(b=272,\; L=305\) 일 때도 \(h=273\) 가 되어 밑변의 길이와 높이의 차가 \(1\) 이 된다. 사실 이러한 특징을 갖는 이등변삼각형 중 두 번째로 작은 이등변삼각형이 \(b=272, \; L=305\) 인 이등변삼각형이다.
그렇다면 밑변의 길이와 높이의 차가 \(1\) 인 이등변삼각형을 작은 것부터 큰 것 순으로 나열할 때, 처음 \(12\)개 삼각형에 대한 \(\sum L\) 의 값은 얼마일까? (단, \(b, \; L\) 은 자연수이다.)
이 문제도 137번과 유사한 문제다. 137번 문제를 숙지하고 와야 한다.
먼저 다음의 식이 성립함을 알 수 있다. \[\sqrt{L^2 - \left ( \dfrac{b}{4} \right )^2 } = b \pm 1\] 양변을 제곱하여 정리하면 \[4L^2 = 5b^2 \pm 8b +4\]가 된다. 양변에 \(5\) 를 곱하면 \[20L^2 = 25b^2 \pm 40b +16 +4\] \[20L^2 = (5b \pm 4)^2 +4\] \[(5b \pm 4)^2 - 20L^2 = -4\] 이 된다. \(p=5b\pm 4\) 라고 하면 \[p^2-20L^2=-4\] 가 된다. (단, \(p\) 는 \(5\) 로 나누어 \(1\) 또는 \(4\) 가 남는 수이다.) 위 방정식을 만족하는 \((p,\;L)\) 은 \((4,\;1)\) 이라는 것을 알 수 있다.
또한 \[p^2 -20 L^2 =1\] 을 만족하는 순서쌍 \((p, \;L)\) 을 66번에서 살펴봤던 연분수 전개를 이용한 펠방정식 풀이법으로 구해보면 \[(9, \;2), \;(161, \;36) ,\; (2889, \; 646),\; \cdots \] 의 근을 얻어낼 수 있다. 이후에 137번의 (1) 과 (3) 을 (2)의 식에 대입하여 새로운 근을 얻어내는 방법으로 근을 얻어낼 수 있다.
이런식으로 \(12\) 개의 근을 구하여 그 합을 계산하면 된다.
'project euler with python' 카테고리의 다른 글
프로젝트 오일러 140번 (0) | 2016.03.15 |
---|---|
프로젝트 오일러 139번 (0) | 2016.03.15 |
프로젝트 오일러 137번 (0) | 2016.03.15 |
프로젝트 오일러 136번 (0) | 2016.03.15 |
프로젝트 오일러 135번 (0) | 2016.03.15 |