一、题意概括
我们现在有一个无限的序列,这个序列由无限次翻转构成。每一次翻转将原来的长度为 的序列整体向后移动一位,并将原序列的第
个元素移到第
个位置,再将这样做得到的新序列拼接在原序列的后面,这样得到一个长度为
的新序列。给定一个正整数
,求这个序列的第
项是什么字母。
二、思路分析
1. 分析数据范围,确定使用方法
由于 ,所以我们不能使用时间复杂度高于
的算法。故考虑使用
(
为常数) 时间复杂度的算法来解决这个问题。
2. 分析使用方法,确定算法结构
(1) 大体框架结构
通过分析样例,我们可以得知,假设一个元素位于新序列中的第 项,原序列的长度为
,那么这个元素位于原序列中的第
个位置。所以,我们可以使用模拟这个过程的算法,重复将
,这种方法结构的时间复杂度为
。
(2)细节优化处理
上面描述中的 可以使用如下方式处理:设置一个值
,重复枚举
,判断
是否成立,若为否,则退出循环。最后的
。这样,这个过程的时间复杂度为
,所有算法的时间复杂度为
。对于
的数据范围,可以在时间范围内输出答案。

被折叠的 条评论
为什么被折叠?



