Skip to content

Commit c5b376d

Browse files
deadshotsbcclauss
andcommittedJan 16, 2020
Solution for problem 30 of Euler Project (#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 <cclauss@me.com>
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

Lines changed: 34 additions & 0 deletions
This file contains bidirectional or hidden Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
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)
Please sign in to comment.