SRM315 div2 difficult

easy, mediumは簡単なので、割愛。

//n <= 500000なので、再帰関数は使えない。
//なんか拍子抜けだけど、普通に描く。
1 2 3 4 5 (k = 3)
1   3   5  -->  1 2 3 (k = 2)

1 2 3 (k = 2)  //と同値。

class KidsGame {
	public:
	int kthKid(int n, int m, int k) {
    int mod = 0;
    int order = 0;
    while(1) {
      if( (k+mod)%m == 0) {
        order += (k+mod)/m; break;
      } else {
        int tmp = n;
        order += (n+mod)/m;
        n = n - (n+mod)/m;
        k = k - (k+mod)/m;
        mod = (tmp+mod)%m;
      }
    }
    return order;
	}