hiho week 94 register

Ended

Participants:787

Verdict:Accepted
Score:100 / 100
Submitted:2016-04-21 11:44:59

Lang:G++

Edit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
int Josephus(int n, int k) {
    if (n == 1) {
        return 0;
    } else if (n < 2 * k) {
        int ret = 0;
        for (int i = 2; i <= n; ++i)
            ret = (ret + k) % i;
        return ret;
    }
    int ret = Josephus(n - n / k, k), mod = n % k;
    if (ret < mod)
        ret = ret - mod + n;
    else
        ret = ret - mod + (ret - mod) / (k - 1);
    return ret;
}
int main() {
    int t, n, k;
    std::cin >> t;
    while (t--) {
        std::cin >> n >> k;
        std::cout << Josephus(n, k) << std::endl;
    }
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX