View Code of Problem 3309

#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.


Back to problem 3309