43 lines
1.0 KiB
Python
43 lines
1.0 KiB
Python
#!/usr/bin/env python3
|
|
|
|
# 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 projecteuler import timing
|
|
|
|
|
|
@timing
|
|
def p030() -> None:
|
|
tot = 0
|
|
|
|
# Straightforward brute force approach. The limit is chosen considering that
|
|
# 6*9^5=354294, so no number larger than that can be expressed as sum
|
|
# of 5th power of its digits.
|
|
for i in range(10, 354295):
|
|
j = i
|
|
_sum = 0
|
|
|
|
while j > 0:
|
|
digit = j % 10
|
|
_sum = _sum + digit ** 5
|
|
j = j // 10
|
|
|
|
if _sum == i:
|
|
tot = tot + i
|
|
|
|
print('Project Euler, Problem 30')
|
|
print(f'Answer: {tot}')
|
|
|
|
|
|
if __name__ == '__main__':
|
|
p030()
|