题目要求:约瑟夫环模型。最后输出2
#include <cstdio>
#include <string.h>
#include <cstdlib>
#include <cmath>
#include <ctgmath>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void pack(vector<int> &m,int a){
for(int i=1; i <= a; i++){
m.push_back(i);
}
}
int main()
{
vector<int> m;
int a;
while(scanf("%d",&a) && a){
int gap = 1;
for(;;gap++){
pack(m, a);
int num = 0;//关键代码
while( m.size()>= 2 ){
m.erase(m.begin()+num);
num = (num+gap-1)%(m.size()) ;
}
if(m[0] == 2) {//这里改成几就会最后输出几
m.clear();
break;
}
m.clear();
}
cout<<gap<<endl;
}
return 0;
}