首页 > 试题广场 >

小红的环形数组

[编程题]小红的环形数组
  • 热度指数:1280 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
小红拿到了一个环形数组(第一个元素的左边是最后一个元素,最后一个元素的右边是第一个元素),她有若干次询问,每次查询从某元素开始,向左/向右前进k步后在什么位置。你能帮帮她吗?

输入描述:
第一行输入两个正整数n,q,代表数组大小和询问次数。
第二行输入n个正整数a_i,代表数组的元素。
接下来的q行,每行输入三个参数x,op,k,其中x为一个正整数,代表初始的位置;op为一个字符'L'或者'R','L'代表向左走,'R'代表向右走;k代表走的步数。

1\leq n,q \leq 10^5
1\leq x \leq n
1\leq k,a_i \leq 10^9


输出描述:
输出q行,每行输出一个正整数,代表每次查询,前进k步后所在的元素。
示例1

输入

5 2
3 4 5 2 4
1 R 3
4 L 4

输出

2
4

说明

第一次询问,小红初始在第一个元素,向右走 3 步后到达第四个元素,是 2。
第二次询问,小红初始在第四个元素,向左走 4 步后到达第五个元素,是 4。

头像 丨阿伟丨
发表于 2025-09-16 14:13:29
题目链接 小红的环形数组 题目描述 小红拿到了一个大小为 的环形数组,她有 次询问。 每次查询会给定一个初始位置 pos(1-indexed),一个方向 dir('L' 或 'R'),以及一个步数 k。 你需要计算从 pos 开始,按 dir 方向走 k 步后,最终落在哪个元素上。 解题思路 这 展开全文
头像 KNYL
发表于 2025-04-02 19:44:04
A = list(map(int, input().split(" "))) n = A[0] o = A[1] nums = list(map(int, input().split(" "))) for i in range(o): operate 展开全文
头像 牛客77911743号
发表于 2025-04-28 11:29:32
import sys n, q = map(int, input().split()) li = input().split() for line in sys.stdin: x, op, k = line.split() x = int(x) k = int(k) 展开全文