#include<iostream> #include<algorithm> #include<vector> #include<string> #include<cmath> #include<cstdio> using namespace std; //约瑟夫环问题 int main(void){ int n,i; cin>>n; while(n!=0){ int f=0,t=0,s=0; bool a[101]={0}; do { ++t;//逐个枚举圈中的所有位置 if(t>n) t=1;//数组模拟环状,最后一个与第一个相连 if(!a[t]) s++;//第t个位置上有人则报数 if(s==3)//当前报的数是3 { s=0;//计数器清零 a[t]=1;//此处人已死,设置为空 f++;//死亡人数+1 } }while(f!=n-1);//直到所有人都被杀死为止 for(int i=1;i<=n;i++){ if(a[i]!=1){ cout<<i<<endl; } } cin>>n; } } |
Double click to view unformatted code.