atcoder#AGC061A. [AGC061A] Long Shuffle

[AGC061A] Long Shuffle

题目描述

配列 A1, , AN A_1,\ \ldots,\ A_N があり、はじめ全ての i i について Ai = i A_i\ =\ i です。手順 shuffle(L, R) \mathrm{shuffle}(L,\ R) を以下として定義します。

  • R = L + 1 R\ =\ L\ +\ 1 なら、AL A_L AR A_R の値を入れ替えて終了する。
  • そうでないなら、shuffle(L, R  1) \mathrm{shuffle}(L,\ R\ -\ 1) を実行してから shuffle(L + 1, R) \mathrm{shuffle}(L\ +\ 1,\ R) を実行する。

shuffle(1, N) \mathrm{shuffle}(1,\ N) を行うとします。手順終了後の AK A_K の値を出力してください。

各入力ファイルについて、テストケースを T T 個解いてください。

输入格式

入力は、標準入力から以下の形式で与えられる。

T T case1 case_1 case2 case_2 \vdots caseT case_T

各ケースは、以下の形式である。

N N K K

输出格式

T T 行出力せよ。i i 行目に、i i 個目のテストケースの答えを出力すること。

题目大意

题目描述

你有一个排列长度为 n(n1018)n(n\le10^{18}) 的排列 AA,初始 Ai=iA_i=i,现在对它进行一次 shuffle(1,n)\mathrm{shuffle}(1,n) 操作。shuffle(L,R)\mathrm{shuffle}(L,R) 的定义如下:

  • R = L + 1 R\ =\ L\ +\ 1 时,swap(AL,AR)\mathrm{swap}(A_L,A_R)
  • 否则,依次执行 shuffle(L,R1)\mathrm{shuffle}(L,R-1), shuffle(L+1,R)\mathrm{shuffle}(L+1,R)

您需要求出 shuffle(1, n) \mathrm{shuffle}(1,\ n) 执行完毕后,Ak(1kn)A_k (1\le k\le n) 的值。共 TT 组数据。

7
2 1
2 2
5 1
5 2
5 3
5 4
5 5
2
1
2
4
1
5
3

提示

制約

  • 1  T  1000 1\ \leq\ T\ \leq\ 1000
  • 2  N  1018 2\ \leq\ N\ \leq\ 10^{18}
  • 1  K  N 1\ \leq\ K\ \leq\ N

Sample Explanation 1

N=2 N=2 のときは、以下を行って A=(2,1) A=(2,1) を得ます。 - shuffle(1, 2) \mathrm{shuffle}(1,\ 2) を実行し、A1 A_1 A2 A_2 を入れ替える。 N=5 N=5 のときは、以下を行って A=(2,4,1,5,3) A=(2,4,1,5,3) を得ます。 - shuffle(1, 5) \mathrm{shuffle}(1,\ 5) を実行する。 - shuffle(1, 4) \mathrm{shuffle}(1,\ 4) を実行する。 - shuffle(1, 3) \mathrm{shuffle}(1,\ 3) を実行する。 - \vdots - shuffle(2, 4) \mathrm{shuffle}(2,\ 4) を実行する。 - \vdots - shuffle(2, 5) \mathrm{shuffle}(2,\ 5) を実行する。 - shuffle(2, 4) \mathrm{shuffle}(2,\ 4) を実行する。 - \vdots - shuffle(3, 5) \mathrm{shuffle}(3,\ 5) を実行する。 - \vdots