top1编程
← 返回题目
题解

【基础】约瑟夫问题

1 条题解

  • 0
    @ 2026-7-28 23:03:33
    #include <bits/stdc++.h>
    using namespace std;
    vector<int> v;
    int main(){
    	int n,m,i; 
    	cin>>n>>m;
    	for(i = 1;i <= n;i++){
    		v.push_back(i);
    	}
    	int c = -1;
    	while(v.size() != 1){//能删除
    		//要删第m个数 
    		c = (c + m) % v.size();//下标从0开始的位置
    //		cout<<c<<" "<<v[c]<<endl;
    		v.erase(v.begin() + c);//删除第c个数字
    		c--;//删除位置往前调一个
    	}
    	cout<<v[0]<<endl;//最后一个剩余编号
    }
    
    • 1