A permutation is an ordered arrangement of objects. For example, 3124 is one possible permutation of the digits 1, 2, 3 and 4. If all of the permutations are listed numerically or alphabetically, we call it lexicographic order. The lexicographic permutations of 0, 1 and 2 are:
$$012\ 021\ 102\ 120\ 201\ 210$$What is the millionth lexicographic permutation of the digits 0, 1, 2, 3, 4, 5, 6, 7, 8 and 9?
In [124]:
from math import factorial
def n_th(n, m):
n -= 1
a = [i for i in range(0,m)]
r = ''
for k in range(m - 1, 0, -1):
p = factorial(k)
v = int(n/p)
n %= p
r += str(a[v])
del a[v]
return r + str(a[0])
In [125]:
n_th(5, 3)
Out[125]:
In [127]:
n_th(1000000, 10)
Out[127]:
In [128]:
%timeit n_th(1000000, 10)
In [ ]: