题目描述
n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再出圈,……依次类推,直到所有的人都出圈,请输出依次出圈人的编号.
输入输出格式
输入格式:
n m
输出格式:
出圈的编号
输入输出样例
说明
m,n≤100
1 #include<iostream> 2 #include<list> 3 using namespace std; 4 5 int n,m; 6 list<int>num; 7 int main(){ 8 cin>>n>>m; 9 for(int i=1;i<=n;i++){ 10 num.push_back(i); 11 } 12 list<int>::iterator k=num.begin(); 13 while(num.size()>1){ 14 for(int i=1;i<m;i++){ 15 k++; 16 if(k==num.end()){ 17 k=num.begin(); 18 } 19 } 20 list<int>::iterator next=++k; 21 if(next==num.end()) 22 next=num.begin(); 23 k--; 24 cout<<*k<<" "; 25 num.erase(k); 26 k=next; 27 } 28 cout<<*k; 29 return 0; 30 }