Advertisement
Jasir

Josephus problem

Nov 6th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.41 KB | None | 0 0
  1. int josephN(int n, int k){
  2.     if(n==1) return n;
  3.     return (josephN(n - 1, k) + k - 1)%n + 1;
  4. }
  5.  
  6. int josephKlogN(int n, int k){
  7.     if (n == 1) return 0;
  8.     if (k == 1) return n-1;
  9.     if (k > n) return (josephKlogN(n-1, k) + k) % n;
  10.  
  11.     int cnt = n / k;
  12.     int res = josephKlogN(n - cnt, k);
  13.     res -= n % k;
  14.  
  15.     if (res < 0) res += n;
  16.     else res += (res / (k - 1) );
  17.  
  18.     return res;
  19. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement