問題
順列とはモノの順番付きの並びのことである. たとえば, 3124は数 1, 2, 3, 4 の一つの順列である. すべての順列を数の大小でまたは辞書式に並べたものを辞書順と呼ぶ. 0と1と2の順列を辞書順に並べると
012 021 102 120 201 210
になる.
0,1,2,3,4,5,6,7,8,9からなる順列を辞書式に並べたときの100万番目はいくつか?
http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2024
回答
あとで追加予定(=やらない。)。
import math
def main():
target = 10**6
target -=1
ans = ''
ls = range(10)
for i in range(9,-1,-1):
n = ls.pop(target // math.factorial(i))
target %= math.factorial(i)
ans += str(n)
print ans
main()