Description
Input
人数n
从第s个人开始报数s
报到第几个数m
Output
剩下的最后一个人的编号
Sample Input
9 1 3
Sample Output
1
- #include <stdio.h>
int
main()
- {
int
n,f,s;
scanf
(
"%d%d%d"
,&n,&s,&f);
//输入题目中的n s f int
a[n+1],i,num,k;
// 定义变量 for
(i=0; i<n; i++)
//循环初始化每一个人的编号 a[i]=i+1;
num=0;
//初始化变量 i=s-1;
k=0;
while
(num<n-1) //当剩余一人时停止
{
if
(a[i]!=0)k++; //当第i个人报数成功后k+1
if
(k==f) //当报数的人数到达f后出圈
抹去他的编号(将a[i]赋值为0) {
a[i]=0;
num++;
k=0; //k重新计数
}
i++;
//对下一个编号进行判断 if
(i==n)i=0; //当i超过编号最大值时 i从0重新计数
}
for
(i=0; i<n; i++)
//循环判断输出剩下的那一个人的编号 if
(a[i]!=0)
printf
(
"%d"
,a[i]);
return
0;
- }