Euler Problem 24

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 [1]:
factorials = [1]
prod = 1
for k in range(1, 10):
    prod *= k
    factorials.append(prod)
factorials.reverse()

def base_factorial(n):
    seq = []
    for f in factorials:
        seq.append(n//f)
        n %= f
    return seq

def get_perm(n):
    L = list(range(10))
    perm = ''
    for d in base_factorial(n):
        perm += str(L[d])
        del L[d]
    return perm

print(get_perm(10**6 - 1))


2783915460

In [ ]: