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; }