小孩子报数问题

来源:互联网 发布:雨人f4数据库 编辑:程序博客网 时间:2024/04/27 14:48
F - 小孩报数问题
Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu
Submit Status Practice POJ 3750

Description

有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出列,然后从下一个小孩开始报数,仍是报到S个出列,如此重复下去,直到所有的小孩都出列(总人数不足S个时将循环报数),求小孩出列的顺序。

Input

第一行输入小孩的人数N(N<=64) 
接下来每行输入一个小孩的名字(人名不超过15个字符) 
最后一行输入W,S (W < N),用逗号","间隔

Output

按人名输出小孩按顺序出列的顺序,每行输出一个人名

Sample Input

5XiaomingXiaohuaXiaowangZhangsanLisi2,3

Sample Output

ZhangsanXiaohuaXiaomingXiaowang

Lisi

#include <iostream>#include <cstdio>#include <algorithm>#include <queue>#include <vector>#include <string>using namespace std;queue<string> s;int main(){int n,p,q,i;scanf("%d",&n);while(n--){string a;cin>>a;s.push(a);}scanf("%d,%d",&p,&q);for(i=1;i<p;i++){s.push(s.front());  //处理从第几个孩子开始报数 s.pop();}i=1;while(s.size()>0){if(i%q==0)     //报道第q个孩子弹出 {cout<<s.front()<<endl;s.pop();}else         //否则压如队尾 {s.push(s.front());s.pop();}i++;}}


0 0
原创粉丝点击