用数组来遍历
#include<stdio.h>
int main()
{
int arr[100]={0};
int n=0;
int k=0;
int m=0;
scanf("%d%d%d",&n,&k,&m);
int cur=1;//报的序号
for(int i=0;i<n;i++)
{
arr[i]=1;
}
int i=k-1;//遍历的编号编号,由于数组特性要减一
int peo=n;//记录剩余人数
while(peo!=1)
{
if(i>=n)
{
i=0;//人数报完了就重置
}
if(arr[i]==0)
{
i++;
continue;//没有人了,就不能继续报数了,直接跳过即可
}
if(cur==m)
{
//需要判断淘汰后的情况
arr[i]=0;
peo--;
cur=0;
}
cur++;
i++;
}
for(i=0;i<n;i++)
{
if(arr[i]==1)
{
printf("%d\n",i+1);
break;
}
}
return 0;
}
int main()
{
int arr[100]={0};
int n=0;
int k=0;
int m=0;
scanf("%d%d%d",&n,&k,&m);
int cur=1;//报的序号
for(int i=0;i<n;i++)
{
arr[i]=1;
}
int i=k-1;//遍历的编号编号,由于数组特性要减一
int peo=n;//记录剩余人数
while(peo!=1)
{
if(i>=n)
{
i=0;//人数报完了就重置
}
if(arr[i]==0)
{
i++;
continue;//没有人了,就不能继续报数了,直接跳过即可
}
if(cur==m)
{
//需要判断淘汰后的情况
arr[i]=0;
peo--;
cur=0;
}
cur++;
i++;
}
for(i=0;i<n;i++)
{
if(arr[i]==1)
{
printf("%d\n",i+1);
break;
}
}
return 0;
}