-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path14.py
38 lines (30 loc) · 852 Bytes
/
14.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
def solve(num: int) -> int:
dp = dict()
max_starter = 0
max_length = 0
for n in range(1, num): #strictly less than num
cur = n
length = 0
early_stop = False
while(cur != 1):
if cur in dp.keys():
dp[n] = length + dp[cur]
early_stop = True
break
if cur % 2 == 0:
cur = cur / 2
else:
cur = 3 * cur + 1
length += 1
if not early_stop:
dp[n] = length
if dp[n] > max_length:
max_starter = n
max_length = dp[n]
return max_starter
if __name__ == "__main__":
result = solve(1000000)
print(result)
def test_basic():
assert(solve(14)==9)
assert(solve(100)==97)