约瑟夫环2
题目:
我的代码:
#include<iostream>
using namespace std;
int a,m;//人质人数,间隔人数
int start,last;//start从哪个人开始,last现有人数
bool tag;
int main(){
while(cin>>a){
tag=false;
m=a+1;//从第一个劫匪开始
while(!tag){//找到了{true}就停止
tag=true;
last=2*a;
start=(m%last);
if(start==0){start=last;}
for(int i=0;i<a;i++){//循环 a 次
if(start<=a){//落在人质位,试下一个
tag=false;
break;
} else{
last--;//右端劫匪减一
start--;//被干掉一个人,回到前一位
start=(start+m)%last;
if(start==0){start=last;}
}
}
if(tag){
cout<<m;
}
m++;
}
}
}