#1135. 折返跑传棒(shuttle)

折返跑传棒(shuttle)

  • 输入文件:shuttle.in
  • 输出文件:shuttle.out
  • 时间限制:1 s1\ \mathrm{s}
  • 内存限制:256 MB256\ \mathrm{MB}

题目描述

体育课玩"折返跑传棒"游戏:n 名同学站成一排,编号为 1∼n1 \sim n,接力棒一开始在 1 号同学手中。

老师喊一声"传",棒就传给下一位同学:1 号传给 2 号、2 号传给 3 号……一直传到 n 号;传到 n 号后掉头往回传:n 号传给 n−1n-1 号、n−1n-1 号传给 n−2n-2 号……一直传回 1 号;回到 1 号后又掉头往前传……如此循环往返,永不停歇。

现在有 q 次询问,第 i 次询问:如果一共传了 tit_i 次(传 1 次 = 棒传给下一位同学),此时棒应该在几号同学手中?(ti=0t_i = 0 表示一次都没传,棒还在 1 号手中)

输入格式

第一行两个整数 n, q。

接下来 q 行,每行一个整数 tit_i。

输出格式

共 q 行,每行一个整数,表示对应询问时刻棒所在同学的编号。

输入输出样例

5 4
0
1
6
9
1
2
3
2

说明/提示

样例解释

5 名同学时,棒的位置按 1、2、3、4、5、4、3、2、1、2、……循环。

  • t=0t=0:在 1 号;t=1t=1:传到 2 号;t=6t=6:第 6 次传完在 3 号;t=9t=9:第 9 次传完在 2 号。

提示

棒从 1 号出发、传到 n 号、再传回 1 号,正好是 2(n−1)2(n-1) 次,之后局面与开始时完全相同,所以只需要用 tit_i 对 2(n−1)2(n-1) 取模即可。

数据范围

对于 100%100\% 的数据,1≤n≤1051 \le n \le 10^5,1≤q≤1051 \le q \le 10^5,0≤ti≤10180 \le t_i \le 10^{18}。