#include <stdio.h>
int main()
{
int n,k,m,count=0;
scanf("%d %d %d",&n,&k,&m);
int a[n],left=n;//left 为剩余的人数。
for(int i=0;i<n;i++)
{
a[i]=0;
}
for(int j=k;a[j]!=1;j++)
{
count++;
if(count%m==0)
{
a[j]=1;
left--;
}
if(j==n-1)
{
break;
}
}
while(left!=0)
{
for(int t=0;t<n;t++)
{
if(a[t]!=1)
{
count++;
}
if(a[t]!=1&&count%m==0)
{
a[t]=1;
left--;
}
if(left==0)
{
printf("%d",t);
break;
}
}
if(left==0)
{
break;
}
}
return 0;
}
第一次从所给的数字开始便利,第二次之后开始进行从0开始遍历全部,直至只剩下最后一个。

京公网安备 11010502036488号