L1-050 倒数第N个字符串 (15 分)
摘要
Title: L1-050 倒数第N个字符串 (15 分)
Tag: 模拟
Memory Limit: 64 MB
Time Limit: 1000 ms
Powered by:NEFU AB-IN
L1-050 倒数第N个字符串 (15 分)
-
题意
给定一个完全由小写英文字母组成的字符串等差递增序列,该序列中的每个字符串的长度固定为 L,从 L 个 a 开始,以 1 为步长递增。例如当 L 为 3 时,序列为 { aaa, aab, aac, …, aaz, aba, abb, …, abz, …, zzz }。这个序列的倒数第27个字符串就是 zyz。对于任意给定的 L,本题要求你给出对应序列倒数第 N 个字符串。
-
思路
由于数据量比较小,可以先求出一共有多少个串,然后用总数减去它,并从前往后确定
- 其次每次减去判断是否小于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="")