#include<iostream> #include<queue> #include<cstdio> using namespace std; //可以考虑用队列解决 int main() { int N,W,S; queue<string> kids; while(cin>>N) { string name; int count=1;//计算器 //入队 for(int i=0; i<N; i++) { cin>>name; kids.push(name); } scanf("%d,%d",&W,&S); //一次报数一个一个出队,若count==S时出圈并输出出圈小孩 //首先先把队列状态变为W开头 while(count!=W) { string kid=kids.front();//出队的小孩 kids.pop(); kids.push(kid);//将出队小孩从队尾入队 count++; } count=0; while(N!=1) { count++; if(count==S) {//出圈并输出 cout<<kids.front()<<endl; kids.pop(); N--; count=0;//计数器清零 }else { string kid=kids.front(); kids.pop(); kids.push(kid); } } cout<<kids.front()<<endl; } } |
Double click to view unformatted code.