版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fanbaobao829/article/details/83384773
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll f(ll n,ll m,ll k)
{
if(m*k<=n)
return m*k;
if(k>n)
return (f(n-1,m-1,k)+(k-1)%n)%n+1;
ll tp=f(n-n/k,m-n/k,k);
if(tp<=n%k)
return n/k*k+tp;
else
return ((tp-n%k-1)/(k-1)+tp+n/k*k-1)%n+1;
}
int main()
{
ll n,m,k,t,cas=0;
scanf("%lld",&t);
while(t--&&scanf("%lld%lld%lld",&n,&m,&k)!=EOF)
printf("Case #%lld: %lld\n",++cas,f(n,m,k));
return 0;
}