poj 3750小孩报数问题

来源:互联网 发布:淘宝虚拟店铺怎么开 编辑:程序博客网 时间:2024/04/28 06:39

Description

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

Input

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

Output

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

Sample Input

5XiaomingXiaohuaXiaowangZhangsanLisi2,3

Sample Output

ZhangsanXiaohuaXiaomingXiaowangLisi
模拟,位置序号存入p数组0~n-1,开始位置为(w+n-1)%n,每次出队位置为(w+s-1)%n,然后p中从w开始元素前移
#include<iostream>#include<cstring>#include<cstdio>#include<string>using namespace std;string na[65];    int p[65];int main(){    int w,s,n,i;    char c;    cin>>n;    for(i=0;i<n;i++)    {        cin>>na[i];        p[i]=i;    }    cin>>w>>c>>s;    w=(w+n-1)%n;    do    {        w=(w+s-1)%n;        cout<<na[p[w]]<<endl;        for(i=w;i<n-1;i++)        p[i]=p[i+1];    }while(--n);//此处一定是--n,注意do-while的区别,否则re    return 0;}


0 0
原创粉丝点击