Project Euler - Problem 9.
A Pythagorean triplet is a set of three natural numbers, a < b < c, for which,
For example, 32 + 42 = 9 + 16 = 25 = 52.
There exists exactly one Pythagorean triplet for which a + b + c = 1000.
Find the product abc.
- 피타고라스의 수는 a < b < c이고 a^2 + b^2 = c^2의 조건을 갖는 수이다. 예를 들면, 3^2 + 4^2 = 9 + 16 = 25 = 5^2와 같다. a + b + c = 1000이 되는 피타고라스 수는 하나밖에 없다. 이 abc를 곱하면 몇인가?
이런식으로 2중 루프를 돌려 무식하게 풀 수도 있습니다.
하지만, 식을 전개하면서 우리가 원하는 해를 풀어나간다면 루프를 줄일 수 있습니다.
a + b + c = 1000 이면,
b + c = 1000 - a
b = (1000 - a) - c
1000 - a를 x라고 하면
b = x - c
가 됩니다.
이것을 피타고라스 수에 대입하면
a^2 + b^2 = c^2
a^2 + (x - c)^2 = c^2
a^2 + x^2 - 2x + c^2 = c^2
a^2 + x^2 = 2xc
(a^2 + x^2) / 2x = c
라는 결론을 낼 수 있고,
x = 1000 - a 이기 때문에 a를 구할 수 있다면 c, b를 구할 수 있습니다.
따라서 a를 1부터 1000까지 반복하며 식을 대입한다면 해를 구할 수 있습니다.
새삼 다시 수학의 중요성을 느끼고 있습니다.
'Basics > Euler Project' 카테고리의 다른 글
Problem 11. 20x20의 격자 안에 인접한 숫자 4개의 곱 중 가장 큰 값은? (0) | 2014.11.05 |
---|---|
Problem 10. 2백만 이하 소수들의 합 (0) | 2014.11.04 |
Problem 8. 1000자리의 숫자 중 인접한 13자리의 곱중 가장 큰 수는? (0) | 2014.11.04 |
Problem 7. 10001번째 소수는? (0) | 2014.11.03 |
Problem 6. 1 ~ 100까지의 합의 제곱과 제곱의 합의 차이 (0) | 2014.11.03 |