第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)


全部评论

相关推荐

10-22 15:25
门头沟学院 C++
种花网友小松:求求你别发了,我几乎都快嫉妒得疯了,倒在床上蒙住被子就开始抱着枕头尖叫流泪,嘴里一边喊着卧槽卧槽,一边又忍着,我边发边哭,打字的手都是抖的,后来我的手抖得越来越厉害,从心头涌起的思想、情怀和梦想,这份歆羡和悔恨交织在一起,我的笑还挂在脸上,可是眼泪一下子就掉下来了。求你了别发了,我生活再难再穷我都不会觉得难过,只有你们发这种东西的时候,我的心里像被刀割一样的痛,打着字泪水就忍不住的往下流。
我的求职进度条
点赞 评论 收藏
分享
活泼的代码渣渣在泡池...:哈哈哈挺好的,我也上岸美团了,不说了,我又接了一单
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务