在一行中输入三个整数
,用空格隔开。
输出一个整数,表示最后剩下的"大王"编号。
5 1 2
3
初始队列编号为,从编号
开始报数:
出队,剩余
;
出队,剩余
;
出队,剩余
;
出队,剩余
,输出
。
#include <stdio.h>
int main()
{
int n, k, m;
scanf("%d %d %d", &n, &k, &m);
int arr[n],a=0,p=k;//arr[]s数组标记0出队,a标记出队人数,p标记当前未出队的首个报数编号
for(int i=0;i<n;i++) arr[i] = 1;
while(n-1-a)
{
for(int j=0;j<m-1;j++)
{
do{
if(++p==n) p=0;
}while(!arr[p]);//找出出队编号
}
arr[p]=0;
a++;
do{
if(++p==n) p=0;
}while(!arr[p]);//找出出队后下个首个报数编号
}
printf("%d\n",p);
return 0;
}