aboutsummaryrefslogtreecommitdiff
path: root/07_mathematics/josephus_queries_2164.cpp
blob: b17f3c9a4a8ee8757e5493c86e379fcd86ed7695 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>

int f(int n, int k, int m) {
	int h = n/2 + m*(n%2);
	if (n == 1) return 1;
	if (k <= h) return 2*k-m;
	return 2*f(n-h, k-h, m^(n%2))+m-1;
}

int main() {
	int q, n, k;
	std::cin >> q;
	for (int i = 0; i < q; i++) {
		std::cin >> n >> k;
		std::cout << f(n, k, 0) << "\n";
	}
}

Generated with cgit - Back to sebastiano.tronto.net