'''
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.
'''

from euler import digits

# brute force
def digit_powers(n, p):
  return sum([int(d)**p for d in str(n)]) == n

def digit_power_finder(p):
  nums = []
  digit_max = 9**p
  d = 1
  while digits(d * digit_max) > d:
    d += 1
  for i in range(2, d * digit_max + 1):
    if digit_powers(i, p):
      nums.append(i)
  return nums

digit_power_finder(5)
