Skip to content

Commit c5b376d

Browse files
deadshotsbcclauss
andcommitted
Solution for problem 30 of Euler Project (TheAlgorithms#1690)
* Create soln.py Solution for problem 30 of Euler Project * Update soln.py * update soln.py modified the changes * if __name__ == "__main__": Co-authored-by: Christian Clauss <[email protected]>
1 parent 38bad6b commit c5b376d

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

project_euler/problem_30/soln.py

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
""" Problem Statement (Digit Fifth Power ): https://projecteuler.net/problem=30
2+
3+
Surprisingly there are only three numbers that can be written as the sum of fourth powers of their digits:
4+
5+
1634 = 1^4 + 6^4 + 3^4 + 4^4
6+
8208 = 8^4 + 2^4 + 0^4 + 8^4
7+
9474 = 9^4 + 4^4 + 7^4 + 4^4
8+
As 1 = 1^4 is not a sum it is not included.
9+
10+
The sum of these numbers is 1634 + 8208 + 9474 = 19316.
11+
12+
Find the sum of all the numbers that can be written as the sum of fifth powers of their digits.
13+
14+
(9^5)=59,049‬
15+
59049*7=4,13,343 (which is only 6 digit number )
16+
So, number greater than 9,99,999 are rejected
17+
and also 59049*3=1,77,147 (which exceeds the criteria of number being 3 digit)
18+
So, n>999
19+
and hence a bound between (1000,1000000)
20+
"""
21+
22+
23+
def digitsum(s: str) -> int:
24+
"""
25+
>>> all(digitsum(str(i)) == (1 if i == 1 else 0) for i in range(100))
26+
True
27+
"""
28+
i = sum(pow(int(c), 5) for c in s)
29+
return i if i == int(s) else 0
30+
31+
32+
if __name__ == "__main__":
33+
count = sum(digitsum(str(i)) for i in range(1000,1000000))
34+
print(count) # --> 443839

0 commit comments

Comments
 (0)