Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- n = int(input())
- acc = list([[-1] for i in range(0, n + 1)])
- def factor(n):
- r = []
- if n == 1:
- return [1]
- for i in range(1, n // 2 + 1):
- if n % i == 0:
- r.append(i)
- return r
- gp = [-1]
- def save(p):
- global gp
- if len(gp) > len(p) or (len(gp) > 0 and gp[0] == -1):
- gp = p
- if len(gp) == len(p):
- for i in range(len(p)):
- if p[i] < gp[i]:
- gp = p
- break
- def ssave(n):
- global gp, acc
- acc[n] = gp[:]
- gp = [-1]
- def f(a, p, n):
- global acc
- if n == 1:
- return save(p)
- if n <= 0:
- return
- for i in a:
- o = 1
- u = n - 1
- if i != 1:
- o = n // i
- u = o * (i - 1)
- b = factor(u)
- p0 = p + [o]
- u = int(u)
- if acc[u] != [-1]:
- save(p0 + acc[u])
- else:
- f(b, p0, u)
- for i in range(1, n + 1):
- a = factor(i)
- f(a, [], i)
- ssave(i)
- print(list(map(int, acc[-1])))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement