题目描述
有 nnn 只猴子,按顺时针方向围成 111 圈选大王(编号从 111 到 nnn),从第 111 号开始报数,一直数到 mmm,数到 mmm 的猴子退出圈外,剩下的猴子再接着从 111 开始报数。就这样,直到圈内只剩下一只猴子时,这个猴子就是猴王。编程输人 nnn 和 mmm,输出最后猴王的编号。
输入
每行是用空格分开的两个整数,第一个是 nnn,第二个是 mmm(0<m,n≤500 \lt m, n \le500<m,n≤50)。最后一行是 0 0。
输出
对于每行输入数据(最后一行除外), 输出数据也是一行,即最后猴王的编号。
输入输出样例
样例输入 #1
复制
6 2
12 4
8 3
0 0 样例输出 #1
复制
5
1
7解答:
#include<stdio.h>
int main()
{
int a[55], n, m, i, num = 0, over = 0;
while (scanf("%d %d",&n,&m)&&n != 0 && m != 0)
{
for (i = 1; i <= n; i++)
a[i] = 1;
i = 1;
while (over != n - 1)
{
if (a[i] == 1)
num++;
if (num == m)
{
a[i] = 0;
num = 0;
over++;
}
i++;
if (i == n+1)
i = 1;
}
for (i = 1; i <= n; i++)
{
if (a[i] == 1)
{
printf("%d\n", i);
break;
}
}
over = 0;
}
return 0;
}
版权声明:本文为qq_47189506原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。