josephus_queries_2164.cpp (299B)
1 #include <iostream> 2 3 int f(int n, int k, int m) { 4 int h = n/2 + m*(n%2); 5 if (n == 1) return 1; 6 if (k <= h) return 2*k-m; 7 return 2*f(n-h, k-h, m^(n%2))+m-1; 8 } 9 10 int main() { 11 int q, n, k; 12 std::cin >> q; 13 for (int i = 0; i < q; i++) { 14 std::cin >> n >> k; 15 std::cout << f(n, k, 0) << "\n"; 16 } 17 }