File tree Expand file tree Collapse file tree 1 file changed +44
-0
lines changed
project_euler/problem_016 Expand file tree Collapse file tree 1 file changed +44
-0
lines changed Original file line number Diff line number Diff line change 1+ """
2+ Problem 16: https://projecteuler.net/problem=16
3+
4+ 2^15 = 32768 and the sum of its digits is 3 + 2 + 7 + 6 + 8 = 26.
5+
6+ What is the sum of the digits of the number 2^1000?
7+ """
8+
9+ from numpy import log10 , zeros
10+
11+
12+ def solution (power : int = 1000 ) -> int :
13+ """
14+ Calculates the sum of digits by explicit construction of digits array
15+ without the help of Python's large integer property.
16+
17+ >>> solution(50)
18+ 76
19+ >>> solution(20)
20+ 31
21+ >>> solution(15)
22+ 26
23+ >>> solution(3)
24+ 8
25+ """
26+
27+ digits = zeros (int (power * log10 (2 )) + 1 )
28+ digits [0 ] = 1
29+ dig_count = 1
30+ for _ in range (power ):
31+ carry = 0
32+ for d in range (dig_count ):
33+ digits [d ] = digits [d ] * 2 + carry
34+ carry = digits [d ] // 10
35+ digits [d ] %= 10
36+ if carry > 0 :
37+ digits [dig_count ] = carry
38+ dig_count += 1
39+
40+ return int (sum (digits ))
41+
42+
43+ if __name__ == "__main__" :
44+ print (solution ())
You can’t perform that action at this time.
0 commit comments