vector和list和queue三种解法。

1.vector使用迭代器和erase进行删除模拟:

#include<iostream>
#include<vector>
using namespace std;
int main(){
    int n,flag;
    vector<int> vec;
    while(cin>>n){
        if(n>1000)n=999;
        vec.clear();
        for(int i=0;i<n;i++){
            vec.push_back(i);
        }
        auto it=vec.begin();
        while(vec.size()>1){
            if(it+2==vec.end()){
                it=vec.begin();
            }else if(it+1==vec.end()){
                it=vec.begin()+1;
            }else if(it==vec.end()){
                it=vec.begin()+2;
            }else it+=2;
            it=vec.erase(it);
            if(it==vec.end())it=vec.begin();
        }
        cout<<vec[0]<<endl;
    }
    return 0;
}