forked from TheAlgorithms/Python
- Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsol1.py
39 lines (32 loc) · 1.08 KB
/
sol1.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
"""
Project Euler Problem 80: https://projecteuler.net/problem=80
Author: Sandeep Gupta
Problem statement: For the first one hundred natural numbers, find the total of
the digital sums of the first one hundred decimal digits for all the irrational
square roots.
Time: 5 October 2020, 18:30
"""
importdecimal
defsolution() ->int:
"""
To evaluate the sum, Used decimal python module to calculate the decimal
places up to 100, the most important thing would be take calculate
a few extra places for decimal otherwise there will be rounding
error.
>>> solution()
40886
"""
answer=0
decimal_context=decimal.Context(prec=105)
foriinrange(2, 100):
number=decimal.Decimal(i)
sqrt_number=number.sqrt(decimal_context)
iflen(str(sqrt_number)) >1:
answer+=int(str(sqrt_number)[0])
sqrt_number_str=str(sqrt_number)[2:101]
answer+=sum(int(x) forxinsqrt_number_str)
returnanswer
if__name__=="__main__":
importdoctest
doctest.testmod()
print(f"{solution() =}")