L1-050 倒数第N个字符串(Python实现) 测试点全过

这篇具有很好参考价值的文章主要介绍了L1-050 倒数第N个字符串(Python实现) 测试点全过。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言: {\color{Blue}前言:} 前言:

  • 本系列题使用的是,“PTA中的团体程序设计天梯赛——练习集”的题库,难度有L1、L2、L3三个等级,分别对应团体程序设计天梯赛的三个难度。
  • 更新取决于题目的难度,和学校的事情,但尽可能保证每日更新,若没更新次日补上。
  • 这道题跟上一道题相比,那就简单很多了,主要就一个思路转化
  • 我的方法可能不是最简单的,如有什么好的建议,欢迎各位CSDN的朋友告诉我

题目

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

输入格式
输入在一行中给出两个正整数 L ( 2 ≤ L ≤ 6 ) L(2 ≤ L ≤ 6) L2L6 N ( ≤ 1 0 5 ) N(≤10 ^5) N105)

输出格式:
在一行中输出对应序列倒数第 N 个字符串。题目保证这个字符串是存在的。

输入样例:

3 7417

输出样例:文章来源地址https://www.toymoban.com/news/detail-691254.html

pat

题解

  • 这道题的大致思路就是:
    1. 先把倒数转为正数
    1. 再把正数转为26进制
    1. 最后将数字转化成字母
L, N = map(int, input().split())  # 输入 L 和 N
total_strings = 26 ** L  # 序列中总的字符串个数,每个位置都有26种选择

# 计算倒数第 N 个字符串对应的序号
index = total_strings - N

# 将序号转换为 L 进制数,即 L 个位置上的字符对应的索引
digits = []
for _ in range(L):
    index, remainder = divmod(index, 26)
    """
    divmod(index, 26) 是一个内置函数 divmod() 的调用,它用于同时执行除法和取余运算。
    divmod(a, b) 将返回一个包含两个值的元组 (q, r),其中 q 是 a 除以 b 的商,r 是 a 除以 b 的余数。
    换句话说,divmod(a, b) 等效于 (a // b, a % b)。"""
    digits.append(remainder)

# 根据索引构造字符串
result = ''.join(chr(ord('a') + digit) for digit in digits[::-1])
"""
digits[::-1] 是对 digits 列表进行逆序操作,即将列表中的元素反向排列。
这是因为我们之前从右到左获取了每个位置上的字符索引,而构造字符串时需要从左到右的顺序。

chr(ord('a') + digit) 将每个索引值 digit 加上 'a' 的 ASCII 值,然
后将结果转换为对应的字符。这是为了将索引值转换为相应的小写字母。

(chr(ord('a') + digit) for digit in digits[::-1]) 是一个生成器表达式,用于生成一个由字符组成的迭代器。
迭代器中的每个元素是根据索引值计算得到的字符。

''.join(...) 将生成器表达式生成的字符迭代器连接成一个字符串。
通过空字符串 '' 的连接符,将字符依次拼接起来形成最终的字符串结果。

将最终的字符串结果赋值给变量 result。"""
print(result)

到了这里,关于L1-050 倒数第N个字符串(Python实现) 测试点全过的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包