华为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

题目解析

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

你可能感兴趣的:(最新华为OD机试题库2024,华为od,java,javascript,c语言,python)