1. 程式人生 > >C/C++ 猴子選大王

C/C++ 猴子選大王

題目描述

有n只猴子,按順時針方向圍成一圈選大王(編號從1到n),從第1號開始報數,一直數到m,數到m的猴子退出圈外,剩下的猴子再接著從1開始報數。就這樣,直到圈內只剩下一隻猴子時,這個猴子就是猴王,程式設計求輸入n,m後,輸出最後猴王的編號。

輸入

每行是用空格分開的兩個整數,第一個是 n, 第二個是 m ( 0 < m,n <=300)。最後一行是:0 0

輸出

對於每行輸入資料(最後一行除外),輸出資料也是一行,即最後猴王的編號。

樣例輸入

6 2
12 4
8 3
0 0

樣例輸出

5
1
7
#include<stdio.h>
int main()
{
	int n,m,a[300],i=0,j=0,k=0;
	while(scanf("%d",&n)!=EOF)
	{
	scanf("%d",&m);
	if(n==0&&m==0)
		break;
	else
		for(i=0;i<n;i++)
			a[i]=i+1;
	i=0;
	j=0;
	k=0;
	while(j<n-1)
	{
		if(a[i]!=0)
			k++;
		if(k==m)
		{
			a[i]=0;
			j++;
			k=1;
		}
		i++;
		if(i==n)
			i=0;
	}
		i=0;
	while(a[i]==0)
		i++;
	printf("%d\n",a[i]);
	}
}