Pentagonal numbers are generated by the formula, Pn=n(3n−1)/2. The first ten pentagonal numbers are:

1, 5, 12, 22, 35, 51, 70, 92, 117, 145, ...

It can be seen that P4 + P7 = 22 + 70 = 92 = P8. However, their difference, 70 − 22 = 48, is not pentagonal.

Find the pair of pentagonal numbers, Pj and Pk, for which their sum and difference are pentagonal and D = |Pk − Pj| is minimised; what is the value of D?

 

오각수는 Pn=n(3n−1)/2 공식에 따라 생성된다. 처음 10개 오각수는 다음과 같다:

1, 5, 12, 22, 35, 51, 70, 92, 117, 145, ...

P4 + P7 = 22 + 70 = 92 = P8임을 알 수 있다. 그러나, 둘의 차이인 70 − 22 = 48은 오각수가 아니다.

두 수의 합과 차이가 모두 오각수이고 D = |Pk − Pj| 가 최소화되는 두 오각수 Pj and Pk를 찾으시오. D의 값은 얼마인가?

--------------------------------------------------------------------------

 

이 문제는 신기하게도 어렵지 않게 해결했는지 방법은 기억이 나지 않으면서, 어떻게 접근해야 할 지 난감한 것을 보니 상상하지 못할 단순하고 비효율적인 방법으로 해결했던 것 같다.

 

가능한 접근으로는, 오각수 리스트를 만들면서 새로운 오각수를 추가하면 기존 리스트의 숫자와 차이를 비교해 오각수가 되는 경우를 찾고 해당 경우에 합이 오각수인지 판별해 나가는 방법으로 답을 찾는 것이다. 예를 들면, (1, 5)가 있는 오각수 리스트에 다음 오각수인 12를 추가하고, 기존 오각수와 차이 11(12-1), 7(12-5)을 차례로 오각수인지 확인하고 만약 오각수인 경우 두 수의 합이 오각수인지 검증한다.

 

많이 비효율적이지만 답을 구했던 것 같고, 오각수인지 판별하는 것에는 33번 문제를 해결할 때 잠깐 언급했던 근의 공식을 이용해서 오각수 공식 Pn=n(3n−1)/2을 n 기준으로 바꾸면, n=(1+(1+24p)**0.5)/6이 된다. 이것을 활용하여 간단하게 확인 가능하다.

+ Recent posts