Advertisement
Guest User

Untitled

a guest
Apr 21st, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.04 KB | None | 0 0
  1. n = int(input())
  2.  
  3. acc = list([[-1] for i in range(0, n + 1)])
  4.  
  5. def factor(n):
  6.     r = []
  7.     if n == 1:
  8.         return [1]
  9.     for i in range(1, n // 2 + 1):
  10.         if n % i == 0:
  11.             r.append(i)
  12.     return r
  13.  
  14. gp = [-1]
  15. def save(p):
  16.     global gp
  17.     if len(gp) > len(p) or (len(gp) > 0 and gp[0] == -1):
  18.         gp = p
  19.     if len(gp) == len(p):
  20.         for i in range(len(p)):
  21.             if p[i] < gp[i]:
  22.                 gp = p
  23.                 break
  24.  
  25. def ssave(n):
  26.     global gp, acc
  27.     acc[n] = gp[:]
  28.     gp = [-1]
  29.  
  30. def f(a, p, n):
  31.     global acc
  32.     if n == 1:
  33.         return save(p)
  34.     if n <= 0:
  35.         return
  36.     for i in a:
  37.         o = 1
  38.         u = n - 1
  39.         if i != 1:
  40.             o = n // i
  41.             u = o * (i - 1)
  42.         b = factor(u)
  43.         p0 = p + [o]
  44.         u = int(u)
  45.         if acc[u] != [-1]:
  46.             save(p0 + acc[u])
  47.         else:
  48.             f(b, p0, u)
  49.  
  50.  
  51.  
  52. for i in range(1, n + 1):
  53.     a = factor(i)
  54.     f(a, [], i)
  55.     ssave(i)
  56. print(list(map(int, acc[-1])))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement