Description
有n个人围坐一圈,每个人按顺时针方向从1到n顺序编号,从编号为s的那个人开始沿顺时针方向进行从1到m的报数,报数m的那个人出圈。再从他的下一个人重新开始从1到m的报数,如此进行下去直到所有人出圈为止。请编写程序给出这n个人的出圈顺序。
Input
一行中包含3个正整数,分别表示人数n、报数最大值m和开始报数人的编号s。s \leq n \leq100s≤n≤100
Output
按照出圈的顺序依次输出出圈人的编号,每个编号按照%3d的格式输出。
Sample Input 1
5 3 1
Sample Output 1
3 1 5 2 4
#include <stdio.h>
int main()
{
int n, s, m,count=0,a[100],t=0;
scanf("%d%d%d", &n, &m, &s);
for (int i = 0; i <= n; i++)
a[i] = i;//从0开始遍历数组
for (int i = s; i <= n; i++)
{
if(a[i])//如果这个数没有出圈,就计数
t++;
if (t == m)//如果计数达到了报数最大值,输出,令这个数出圈,重置计数
{
printf("%3d", i);
a[i] = 0;
t = 0;
count++;//计数出圈个数
}
if (i == n)//让计数成圈
i = 0;
if (count == n)break;//全部人出圈结束循环
}
return 0;
}