-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path080_sqrt.py
More file actions
54 lines (48 loc) · 1.02 KB
/
080_sqrt.py
File metadata and controls
54 lines (48 loc) · 1.02 KB
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
40
41
42
43
44
45
46
47
48
49
50
51
52
#argument must be integer
def pair(num):
pairs=[]
while num>99:
pairs.append(num%100)
num/=100
pairs.append(num)
pairs.reverse()
return pairs
# ##################################
# sum the first 100 digits
# of the square root of num
def sum100d(num):
sqr=0
pairs=pair(num)
sz=len(pairs)
n=pairs[0]
sqr=int(n**0.5)
resto=n
tmp=sqr*sqr
i=1; decpt=0
sumOfDecimalDigits=sqr
flag=False
while True:
if i>=sz:
add=0
decpt+=1
else:
add=pairs[i]
resto=(resto-tmp)*100+add
if resto==0: break
n=9
while True: #next digit of sqrt
tmp=(2*sqr*10+n)*n
if tmp<resto: break
n-=1
sqr=sqr*10+n
sumOfDecimalDigits+=n
i+=1
if i==100: break
#print decpt, sqr
return sumOfDecimalDigits
# ### MAIN ###
soma=0
for i in range(2,100):
if not int(i**0.5)==i**0.5:
soma+=sum100d(i)
print soma