Files
contests/024/main.py

44 lines
684 B
Python

# Get the millionth lexicographic permutation of the digits
# 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
import math
def fac(n):
if n == 0:
return 1
else:
return n * fac(n-1)
def getPermutation(n, s):
p = sorted(s)
l = len(s)
x = n - 1
seq = []
assert n > 0
assert l > 0
assert n <= fac(l)
f = fac(l)
while l > 0:
part = math.floor(f / l)
f /= l
y = math.floor(x / part)
x -= y * part
seq.append(y)
l -= 1
res = []
for se in seq:
res.append(p.pop(se))
return res
def main():
print("Hello, this is Patrick")
r = getPermutation(1000000, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
print(r)
if __name__ == "__main__":
main()