题目链接:点击打开链接
代码:
#include<stdio.h>
int solve(int n,int k)
{
int res;
if(n==1)
return 0;
if(n<k)
{
res=0;
for(int i=2; i<=n; i++)
res=(res+k)%i;
return res;
}
res=solve(n-n/k,k);
if(res<n%k)
res=res-n%k+n;
else
res=res-n%k+(res-n%k)/(k-1);
return res;
}
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
int q1,q2;
scanf("%d %d",&q1,&q2);
if(q2==1)
{
printf("%d\n",q1);
}
else
printf("%d\n",solve(q1,q2)+1);
}
return 0;
}
特判一下1。