温馨提示:更多精彩内容请关注微信公众号zstu就业
题目描述
有n只猴子围成一圈,从1~n编号,大家决定从中选出一个大王。经过协商,决定选大王的规则为:从编号为1的猴子开始报数,报到k的猴子出圈,然后再从下一只开始继续报1到k......最后剩下来的那只就是大王。要求编程从键盘输入n,k,输出成为大王的猴子编号。
输入
一行输入2个正整数n和k 2<=n<=1000,2<=k<=109
输出
一行一个正整数,表示猴王的编号
样例输入 Copy
3 2
样例输出 Copy
3
提示
本题可以用循环链表实现
#include<stdio.h>
int main()
{
int n,m,j;
scanf("%d%d",&n,&m);
int a[n];
for(int i=0;i<n;i++)
{
a[i]=1;
}
int cnt=1;
j=0;
int sum=n;
while(1)
{
if(sum<=1)
{
break;
}
if(a[j]==1&&cnt==m)
{
a[j]=0;
cnt=1;
sum--;
}
else if(a[j]==1)
{
cnt++;
}
j++;
j=j%n;
}
for(int i=0;i<n;i++)
{
if(a[i]==1)
{
printf("%d\n",i+1);
}
}
return 0;
}