俺是小白,记录一下学习的收获和思路
来源:牛客网
题目描述
n个人(0,1,2,3,4...n-1),围成一圈,从编号为k的人开始报数,报数报到m的人出队(报数是1,2,...m这样报的)。下次从出队的人之后开始重新报数,循环往复,当队伍中只剩最后一个人的时候,那个人就是大王。现在,给定n,k,m,
请你求出大王的编号。
输入描述:
输入一行包含三个整数n,k,m
1<=n<=100,1<=k<=n-1,1<=m<=100
输出描述:
输出一个整数
示例1
输入
5 1 2
输出
3
#include<stdio.h>
int main()
{
int n,k,m,count=0,baoshu=0,i;
int a[100]={0};
scanf("%d %d %d",&n,&k,&m);
i=k;//从第k个人开始移动光标
while(n!=count)
{
if(i>n-1)//如果光标指向最后,回到第一个位置
i=0;
if(a[i]==0)//如果当前是0,
baoshu++;//就开始报数
if(baoshu==m)
{
baoshu=0;//重置报数
a[i]=1;
count++;//count是出局的人数
}
i++;
}
printf("%d",i-1);//count数到了n,多了一个
}
若有问题还请多多指教……