Daily Algorithm - Day 29

105·4일 전
0

Daily Algorithm

목록 보기
30/30

Digit Fifth Powers

Surprisingly there are only three numbers that can be written as the sum of fourth powers of their digits:

1634=14+64+34+448208=84+24+04+849474=94+44+74+44\begin{matrix} 1634 = 1^4 + 6^4 + 3^4 + 4^4\\ 8208 = 8^4 + 2^4 + 0^4 + 8^4\\ 9474 = 9^4 + 4^4 + 7^4 + 4^4 \end{matrix}

As 1=141=1^4 is not a sum it is not included.
The sum of these numbers is 1634+8208+9474=193161634 + 8208 + 9474 = 19316

Find the sum of all the numbers that can be written as the sum of fifth powers of their digits.

각 자리 숫자를 5제곱해서 더했을 때 자기 자신이 되는 수들의 합을 구하는 문제이다.

우선 반복문을 활용할 예정인데 nn자리 숫자의 모든 숫자가 최댓값인 99이고 각 자리 숫자를 5제곱해서 더한 값이 95×n9^5 \times n의 경우를 가정해보자.
95=590499^5=59049이므로 n=6n=6일 경우의 최댓값은 95×6=3542949^5 \times 6 = 354294이고 n=7n=7일 경우에 당연히 77자리 숫자가 나오지 않으므로 조건에 맞는 수가 존재할 수 없다.
즉, 조건을 만족하는 수는 66자리 이하이며, 그 중에서도 95×69^5 \times 6 이하의 값을 가진다.

그렇다면 해당 범위를 통해 구현해보자.

def digit_fifth_powers():
    numbers = []

    # 1부터 9^5 * 6 (6자리 수 최대값)까지 확인
    upper_limit = 9**5 * 6
    for num in range(2, upper_limit):
        digit_sum = 0
        
        for digit in str(num):
            digit_sum += int(digit)**5
        
        if num == digit_sum:
            numbers.append(num)
    
    return sum(numbers)

print(digit_fifth_powers())

>>> 443839   #correct

코드가 간단해서 그런지 gpt 선생님도 지적을 하지 않으셨다.

오늘은 여기까지.
-2025.01.19-

profile
focus on backend

0개의 댓글