Project Euler Problem 030

# Statement

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

\$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\$

As \$1 = 1^4\$ is not a sum it is not included.

The sum of these numbers is 1634 + 8208 + 9474 = 19316.

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

# Solution

The key to get this solution is to determine when to stop. In a number of x digits the highest number
we can build up adding the digits elevated to y power is \$9^y * x\$ if this number is below
the original number then we will never be able to form numbers higher that these.

```def sum_of_digits_to(i, n):
return sum(int(c) ** n for c in str(i))

if __name__ == '__main__':
n = 5
limit = '9'
while (9 ** n) * len(limit) > int(limit):
limit += '9'
limit = int(limit)
result = 0
for i in range(10, limit+1):
if sum_of_digits_to(i, n) == i:
result += i
print("The result is:", result)
```