Problem 24

Permutationを使う必要がありますよね.

def facto(n):
    ans = 1
    for i in xrange(1,n+1):
         ans *= i
    return ans

x = 10 ** 6 -1
k =''
ans = [0,1,2,3,4,5,6,7,8,9]
while len(ans) > 0:
    t = facto(len(ans) - 1)
    g = x / t
    p = ans[g]
    ans.remove(p)
    x %= t
    k += str(p)
print k

いや…嘘つきじゃないです…とりあえずソートしてあるので順番が小さい順なのもわかっていることなので…コッチのほうが速いんだもん….最初は順列で解いたよ!でも順列のジェネレーター使うの面倒だし.