Bad_Programist

Untitled

Dec 31st, 2018
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.29 KB | None | 0 0
  1. def calculator(N):
  2.     if N == 1:
  3.         print('0\n1')
  4.         return None
  5.     if N == 2:
  6.         print('1\n1 2' )
  7.         return None
  8.     if N == 3:
  9.         print('1\n1 3')
  10.         return None
  11.     S = [0, 1, 3]
  12.     A = {}
  13.     A[1] = 0
  14.     A[2] = 1
  15.     A[3] = 1
  16.     for i in range(4, N + 1):
  17.        
  18.        
  19.         if i % 3 == 0 and i % 2 == 0:
  20.             if A[i // 3] == min(A[i // 3], A[i // 2], A[i - 1]):
  21.                 A[i] = A[i // 3] + 1
  22.                 S.append(3)
  23.             elif A[i // 2] == min(A[i // 3], A[i // 2], A[i - 1]):
  24.                 A[i] = A[i // 2] + 1
  25.                 S.append(2)
  26.         elif i % 3 == 0 and A[i // 3] < A[i - 1]:
  27.             A[i] = A[i // 3] + 1
  28.             S.append(3)
  29.         elif i % 2 == 0 and A[i // 2] < A[i - 1]:
  30.             A[i] = A[i // 2] + 1
  31.             S.append(2)
  32.         else:
  33.             A[i] = A[i - 1] + 1
  34.             S.append(1)
  35.        
  36.        
  37.     c = N
  38.     res = [c]
  39.     while c != 1:
  40.         if S[c - 1] == 1:
  41.             c -= 1
  42.         elif S[c - 1] == 2:
  43.             c //= 2
  44.         else:
  45.             c //= 3
  46.         res.append(c)
  47.            
  48.            
  49.            
  50.            
  51.            
  52.            
  53.     print(A[N])  
  54.     print(*res[::-1])
  55.    
  56.    
  57.    
  58. n = int(input())
  59. calculator(n)
Advertisement
Add Comment
Please, Sign In to add comment