题目描述
配列 A1, …, AN があり、はじめ全ての i について Ai = i です。手順 shuffle(L, R) を以下として定義します。
- R = L + 1 なら、AL と AR の値を入れ替えて終了する。
- そうでないなら、shuffle(L, R − 1) を実行してから shuffle(L + 1, R) を実行する。
shuffle(1, N) を行うとします。手順終了後の AK の値を出力してください。
各入力ファイルについて、テストケースを T 個解いてください。
输入格式
入力は、標準入力から以下の形式で与えられる。
T case1 case2 ⋮ caseT
各ケースは、以下の形式である。
N K
输出格式
T 行出力せよ。i 行目に、i 個目のテストケースの答えを出力すること。
题目大意
题目描述
你有一个排列长度为 n(n≤1018) 的排列 A,初始 Ai=i,现在对它进行一次 shuffle(1,n) 操作。shuffle(L,R) 的定义如下:
- R = L + 1 时,swap(AL,AR)
- 否则,依次执行 shuffle(L,R−1), shuffle(L+1,R)
您需要求出 shuffle(1, n) 执行完毕后,Ak(1≤k≤n) 的值。共 T 组数据。
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
- 2 ≤ N ≤ 1018
- 1 ≤ K ≤ N
Sample Explanation 1
N=2 のときは、以下を行って A=(2,1) を得ます。 - shuffle(1, 2) を実行し、A1 と A2 を入れ替える。 N=5 のときは、以下を行って A=(2,4,1,5,3) を得ます。 - shuffle(1, 5) を実行する。 - shuffle(1, 4) を実行する。 - shuffle(1, 3) を実行する。 - ⋮ - shuffle(2, 4) を実行する。 - ⋮ - shuffle(2, 5) を実行する。 - shuffle(2, 4) を実行する。 - ⋮ - shuffle(3, 5) を実行する。 - ⋮