全部评论 1

  • 哥,你这都生成所有排列了,内存不爆才有鬼了.
    我给你一个AC代码参考一下,你看看

    n, m = map(int, input().split())
    
    # 预计算阶乘数组,factorials[i] 存储 i!
    factorials = [1] * (n + 1)
    for i in range(1, n + 1):
        factorials[i] = factorials[i-1] * i
    
    k = m - 1  # 转换为从0开始的索引
    nums = list(range(1, n + 1))
    result = []
    
    for i in range(n):
        # 当前剩余数字的数量是n-i,对应的阶乘是(n-i-1)!
        remaining = n - i
        fact = factorials[remaining - 1]
        index = k // fact
        result.append(nums[index])
        del nums[index]
        k = k % fact
    
    print(' '.join(map(str, result)))
    

    注释里给解释了我就不多说了,而且我主攻c++的,所以代码仅供参考了(好久没写py的代码了)

    2025-03-09 来自 江苏

    0

热门讨论