#include<stdio.h>
void number(int a[],int n,int t,int num); //超過100就崩潰............
int dele(int a[],int n,int t);
int main()
{
int n,i,t,num; //n爲當前猴子數量,i作爲中間量,t爲猴子總量
int a[100];
num=1;
printf("請輸入猴子數量!\n");
scanf("%d",&t);
n=t;
while(n!=1)
{
number(a,n,t,num);
n=dele(a,n,t);
for(i=t-1;i>0;i--)
{
if(a[i]!=-1)
{ //爲下一次報數做準備
if(a[i]==1)
num=2;
else if(a[i]==2)
num=3;
break;
}
}
}
for(i=0;i<t;i++)
{ //查找大王
if(a[i]!=-1)
break;
}
printf("猴子%d當大王\n",i+1);
return 0;
}
void number(int a[],int n,int t,int num)
{ //對猴子編號的函數
int i;
for(i=0;i<t;i++)
{
if(a[i]==-1)
continue;
a[i]=num;
if(num==3)
{
num=1;
}
else num++;
}
}
int dele(int a[],int n,int t)
{ //對報數爲3的猴子賦值爲-1,並更改當前猴子數量的函數
int i;
for(i=0;i<t;i++)
{
if(a[i]==3)
{
a[i]=-1;
n--;
}
}
return n;
}