P1996-约瑟夫问题【STL-vector】

  1. 链接

    P1996 约瑟夫问题

  2. 思路

    用一个vector模拟即可。

  3. 代码

    #include
    using namespace std;
    
    typedef long long ll;
    const int maxn = 2e5+10;
    const int mod = 1e9+7;
    
    int a[maxn];
    vector<int> s;
    int main(void){
    	int n,m;
    	cin >> n >> m;
    	for(int i = 1; i <= n; i++) s.push_back(i);
    	int cnt = 1;
    	while(s.size()>1){
    		if(cnt<m){
    			cnt++;
    			s.push_back(*s.begin());
    			s.erase(s.begin());
    		}
    		if(cnt==m){
    			cout<<*s.begin()<<" ";
    			s.erase(s.begin());
    			cnt = 1;
    		}
    	}
    	cout<<s[0]<<endl;
    	return 0;
    }
    

你可能感兴趣的:(STL)