Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def calculator(N):
- if N == 1:
- print('0\n1')
- return None
- if N == 2:
- print('1\n1 2' )
- return None
- if N == 3:
- print('1\n1 3')
- return None
- S = [0, 1, 3]
- A = {}
- A[1] = 0
- A[2] = 1
- A[3] = 1
- for i in range(4, N + 1):
- if i % 3 == 0 and i % 2 == 0:
- if A[i // 3] == min(A[i // 3], A[i // 2], A[i - 1]):
- A[i] = A[i // 3] + 1
- S.append(3)
- elif A[i // 2] == min(A[i // 3], A[i // 2], A[i - 1]):
- A[i] = A[i // 2] + 1
- S.append(2)
- elif i % 3 == 0 and A[i // 3] < A[i - 1]:
- A[i] = A[i // 3] + 1
- S.append(3)
- elif i % 2 == 0 and A[i // 2] < A[i - 1]:
- A[i] = A[i // 2] + 1
- S.append(2)
- else:
- A[i] = A[i - 1] + 1
- S.append(1)
- c = N
- res = [c]
- while c != 1:
- if S[c - 1] == 1:
- c -= 1
- elif S[c - 1] == 2:
- c //= 2
- else:
- c //= 3
- res.append(c)
- print(A[N])
- print(*res[::-1])
- n = int(input())
- calculator(n)
Advertisement
Add Comment
Please, Sign In to add comment