假设有num个人,每隔k-1人(即第k个人)出列,求出最后出列的人编号
#include <iostream> #include<vector> #include<algorithm> using namespace std; int main() { int num;//共num人 int lastnum;//标记最后出列的人的编号 int countnum=1; int k;//每隔k-1个人(即第k人)出列 vector<int>v; vector<int>::iterator it; cin>>num; cin>>k; v.resize(num); for(int i = 0; i < num; i++) v[i] = i; for(it = v.begin(); !v.empty();) { if(countnum == k) { lastnum = *it; v.erase(it); countnum = 1; } else { it++; countnum++; } if(it == v.end()) { it = v.begin(); } } v.clear(); cout<<lastnum+1<<endl; return 0; }