当前位置: 首页 > news >正文

第k个排列

题目描述
给定参数 n,从 1 到 n 会有 n 个整数:1,2,3,…,n, 这 n 个数字共有 n! 种排列。

按大小顺序升序列出所有排列的情况,并一一标记,当 n = 3 时,所有排列如下:

“123”
“132”
“213”
“231”
“312”
“321”
给定 n 和 k,返回第 k 个排列。

输入描述
输入两行,第一行为 n,第二行为 k,

给定 n 的范围是[1, 9], 给定 k 的范围是[1, n!]。

输出描述
输出排在第 k 位置的数字。

用例1
输入
3
3
输出
213
说明
3的排列有123,132,213…,那么第三位置就是213

用例2
输入
2
2
输出
21
说明
2的排列有12,21,那么第二位置的为21。

n=int(input())
k=int(input())
nums =[i for i in range(1,n+1)]
fact = 1 #n的阶乘
for i in range(1,n+1):fact*=i
results=[]
k-=1  #数字是从1开始的,在这里转化为索引
for i in range(n,0,-1):fact//=iresults.append(nums.pop(k//fact))k%=fact
print(''.join(map(str,results)))

http://www.mrgr.cn/news/50650.html

相关文章:

  • 移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——14.哈希(1)
  • 【PMP】拿到证书之后对自身有什么帮助?
  • docker镜像制作和管理详解
  • 为AI开发者而生,Agent开发专用的IDE
  • 插件集成有哪些痛点和挑战?
  • P11177 [ROIR 2018 Day1] 平方与立方 题解
  • 高精度SAR ADC研究与设计——雷鹏(二)
  • Mac的键盘屏幕需要常清理,你不可缺少的好帮手
  • 10.仓库管理系统(springbootvue3)
  • 从零开始的LeetCode刷题日记:二叉树的迭代遍历
  • 高标准农田信息化与物联网技术的融合
  • 2024年看项目管理软件与工程项目管理的奇妙融合
  • C++学习,标准库 <iterator>
  • vlan的基础知识
  • 留学生辅导 | 谈谈英国硕士论文如何进行论证
  • 利用vmware在移动硬盘安装Ubuntu2go
  • 大学新生编程学习指南:制定有效计划,开启编程之旅
  • Android14 SystemUI 启动流程(1)
  • Ubuntu里彻底卸载UHD
  • SHA256算法学习