#include <stdio.h>
int main(){
int n,a[1001]={0},k,num=1; //k表示猴子数目,num为报的数字
scanf("%d",&n);
for(int i=1;i<=n;i++){ //将参与的猴子标记,参与标记为1,不参与为0,最开始全部从参与
a[i]=1;
}
k=n;
while(k!=1){ //确定唯一猴王
k=0;
num%=3; //每轮报的数字可能过大,余3进行减小数值
for(int i=1;i<=n;i++){
if(a[i]>0){ //必须是每轮未被淘汰的猴子里报数
k++;
if(num%3==0) //报3则标记退出
a[i]=0;
num++;
}
}
}
for(int i=1;i<=n;i++){ //猴王已经确定,需要找出猴王
if(a[i]>0){
printf("%d",i);
break;
}
}
return 0;
}
// 1 2 3 1 2 3 1 2 3 1 2 0 0 0
// 1 2 0 1 2 0 1 2 0 1 2 0 0 0
// 3 1 0 2 3 0 1 2 0 3 1 0 0 0
// 0 1 0 2 0 0 1 2 0 0 1 0 0 0
// 0 2 0 3 0 0 1 2 0 0 3 0 0 0
// 0 2 0 0 0 0 1 2 0 0 0 0 0 0
// 0 1 0 0 0 0 2 3 0 0 0 0 0 0
// 0 1 0 0 0 0 2 0 0 0 0 0 0 0
// 0 1 0 0 0 0 2 0 0 0 0 0 0 0
// 0 1 0 0 0 0 2 0 0 0 0 0 0 0
// 0 3 0 0 0 0 1 0 0 0 0 0 0 0
// 0 0 0 0 0 0 1 0 0 0 0 0 0 0
7-28 猴子选大王 (20分)
最新推荐文章于 2023-04-07 22:56:54 发布