#include<stdio.h>
int main(){
int n,count = 1,i,j;
scanf("%d",&n);
int remain = n;
int t = 0;
int a[n];
for(i = 0;i<n;i++)
a[i] = 0;
while(remain>1){
if(count%3==0&&a[t]==0){
a[t]=1;
remain = remain-1;
count = 1;
}
else if(a[t]==0)
{count++;}
t++;
t = t%n;
}
for(j = 0;j<n;j++)
{if(a[j]==0)
{printf("%d",j+1);}}
return 0;
}

想了很久没想出来的代码,最后还是在B站找了视频理解的

t作为给每个猴子做的标记,每一只猴子都有一个t值 通过t = t%n来实现环

a【t】 = 1的时候意味这这只猴子被淘汰掉,不再参与计数

posted on 2022-03-28 19:39  na2co3-  阅读(279)  评论(0)    收藏  举报