Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- typedef unsigned long long ll;
- ll cnt;
- ll res;
- ll joseph(ll n, ll k) {
- if (n == 1) return 0;
- if (k == 1) return n - 1;
- if (k > n) return (joseph(n - 1, k) + k) % n;
- cnt = n / k;
- res = joseph(n - cnt, k);
- if (res < n % k) {
- res += n;
- res -= n % k;
- } else {
- res -= n % k;
- res += res / (k - 1);
- }
- return res;
- }
- int main() {
- int n, k;
- cin >> n >> k;
- std::cout << joseph(n, k) + 1 << std::endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement