L1-050 倒数第N个字符串 (15 分)

摘要
Title: L1-050 倒数第N个字符串 (15 分)
Tag: 模拟
Memory Limit: 64 MB
Time Limit: 1000 ms

Powered by:NEFU AB-IN

Link

L1-050 倒数第N个字符串 (15 分)

  • 题意

    给定一个完全由小写英文字母组成的字符串等差递增序列,该序列中的每个字符串的长度固定为 L,从 L 个 a 开始,以 1 为步长递增。例如当 L 为 3 时,序列为 { aaa, aab, aac, …, aaz, aba, abb, …, abz, …, zzz }。这个序列的倒数第27个字符串就是 zyz。对于任意给定的 L,本题要求你给出对应序列倒数第 N 个字符串。

  • 思路

    由于数据量比较小,可以先求出一共有多少个串,然后用总数减去它,并从前往后确定

    • 其次nn每次减去26(li)26 ^ {(l - i)}判断是否小于0,找出每一个字符
  • 代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    '''
    Author: NEFU AB-IN
    Date: 2022-04-16 17:43:59
    FilePath: \ACM\GPLT\L1-50.PY
    LastEditTime: 2022-04-16 17:50:49
    '''
    from string import ascii_lowercase

    l, n = map(int, input().split())

    sum = 26**l
    n = sum - n

    for i in range(1, l + 1):
    cnt, index = 0, 0
    while cnt <= n:
    cnt += 26**(l - i)
    index += 1
    n -= (cnt - (26**(l - i)))
    print(ascii_lowercase[index - 1], end="")
使用搜索:谷歌必应百度