#include<bits/stdc++.h>
using namespace std;
int n,sum=0,s=0,x=0;
bool a[1050];
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++) a[i]=1;
int i=1;
while(sum!=n-1){
if(a[i]==1) s++;
if(s==2){
a[i]=0;
s=0;
sum++;
}
i++;
if(i==n+1) i=1;
}
for(int j=1;j<=n;j++){
if(a[j]==1){
x=j;
break;
}
}
printf("%d",x);
return 0;
}
n个人围一圈。从某个人开始,按顺时针方向依次编号。从编号为1的人开始顺时针“一二……“报数,报到2的人退出。这样循环下,圈子里的人不断减少。由于人的个数是有限的,因此会剩下一个人,问最后剩下的人的编号
约瑟夫环问题求解
最新推荐文章于 2025-12-07 21:20:15 发布
1232

被折叠的 条评论
为什么被折叠?



