华为OD机试E卷 –第k个排列 –24年OD统一考试(Java & JS & Python & C & C++)

文章目录

  • 题目描述
  • 输入描述
  • 输出描述
  • 用例
  • 题目解析
  • JS算法源码
  • java算法源码
  • python算法源码
  • c算法源码
  • c++算法源码
  • 题目描述

    给定参数n,从1到n会有n个整数:1,2,3,…,n,这n个数字共有nl种排列。按大小顺序升序列出所有排列的情况,并——标记,
    当n=3时,所有排列如下:
    “123″“132”“213”“231″“312″“321”
    给定n和k,返回第k个排列。

    输入描述

    输入两行,第一行为n,第二行为k,
    给定n的范围是[1,9],给定k的范围是[1,n!]。

    输出描述

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

    用例

    输入

    3
    3

    输出

    213

    说明
    3的排列有123,132,213…那么第三位置就是213

    输入

    2
    2

    输出

    21

    说明
    2的排列有12,21 那么第二位置的为21

    题目解析

    我们可以使用数学上的阶乘数和排列组合的知识来

    作者:飞码创造者

    物联沃分享整理
    物联沃-IOTWORD物联网 » 华为OD机试E卷 –第k个排列 –24年OD统一考试(Java & JS & Python & C & C++)

    发表回复