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
| def solution(k, ranges):
answer = []
graph = [[0, k]]
x = 1
while k != 1 :
if k % 2 == 0 :
graph.append([x,k/2])
k /= 2
else :
graph.append([x,(k*3)+1])
k = (k*3) + 1
x += 1
s = []
for i in range(1,len(graph)) :
s.append((abs(graph[i-1][1] - graph[i][1]))*(0.5) + min(graph[i-1][1], graph[i][1]))
for i in range(len(ranges)) :
ranges[i][1] += len(s)
if abs(ranges[i][0]) > abs(ranges[i][1]) :
answer.append(-1)
continue
answer.append(sum(s[ranges[i][0] : ranges[i][1]]))
return answer
|