第k个排列

标题:第k个排列 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限
给定参数n,从1到n会有n个整数:1,2,3,…,n,这n个数字共有 n! 种排列。
按大小顺序升序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下:

from itertools import permutations

while True:
    try:
        n, k = int(input()), int(input())
        print("".join(map(str, list(permutations(range(1, n + 1), n))[k - 1])))
    except:
        break

n = int(input())
k = int(input())
list_ = [i for i in range(n)]
res = []
start = 0
jieceng = 1
for i in range(n-1):
    jieceng *= (i + 1)
for i in range(n-1,0,-1):
    k2 = k % jieceng
    k = k // jieceng
    if k2 == 0:
        res.append(list_.pop(k - 1))
        res += list_[::-1]
        break
    elif k2 == 1:
        res.append(list_.pop(k))
        res += list_
        break
    else:
        res.append(list_.pop(k))
        jieceng = jieceng // i
        k = k2
r = ""
for i in res:
    r+=str(i+1)
print(r)


全部评论

相关推荐

迷qwq:比我本科强多了,找个不错的工作问题不大,更好的工作就得看面试表现加上运气了。另外自身经历不错,简历写的不太好,再润色一下。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务