본문 바로가기

오일러프로젝트

[오일러프로젝트] 30번문제


각 자리의 숫자를 4제곱해서 더했을 때 자기 자신이 되는 수는 놀랍게도 단 세 개밖에 없습니다.

1634 = 14 + 64 + 34 + 44
8208 = 84 + 24 + 04 + 84
9474 = 94 + 44 + 74 + 44

(1 = 14의 경우는 엄밀히 말해 합이 아니므로 제외합니다)

위의 세 숫자를 모두 더하면 1634 + 8208 + 9474 = 19316 입니다.

그렇다면, 각 자리 숫자를 5제곱해서 더했을 때 자기 자신이 되는 수들의 합은 얼마입니까?


문제를 푸는 로직 자체는 단순한데
계속 답을 틀려서 좀 생각해보니 문제에서 제시된 상한선이 없다.
혼자 힘으로는 상한선을 찾지 못해 검색의 힘을 빌려보니
6자리 수일 때 최대합은 (9**5)*6으로 354294가 나온다.
7자리 수일 때 최대합은 (9**5)*7로 413343으로 6자리의 수가 나온다.

즉, 7자리 이상일 경우에는 합이 자기 자신을 넘을 수 없으므로 6자리 최대수의 합인
354294를 상한선으로 선정하는 것이 의미가 있다는 것..

그 이후에는 brute-force

 

Python
Ruby
Perl