#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的时候意味这这只猴子被淘汰掉,不再参与计数
浙公网安备 33010602011771号