【UVA】 133 --- The Dole Queue

In a serious attempt to downsize (reduce) the dole queue, The New National Green Labour Rhinoceros
Party has decided on the following strategy. Every day all dole applicants will be placed in a large
circle, facing inwards. Someone is arbitrarily chosen as number 1, and the rest are numbered counterclockwise up to N (who will be standing on 1’s left). Starting from 1 and moving counter-clockwise,
one labour official counts off k applicants, while another official starts from N and moves clockwise,
counting m applicants. The two who are chosen are then sent off for retraining; if both officials pick
the same person she (he) is sent off to become a politician. Each official then starts counting again
at the next available person and the process continues until no-one is left. Note that the two victims
(sorry, trainees) leave the ring simultaneously, so it is possible for one official to count a person already
selected by the other official.

Input
Write a program that will successively read in (in that order) the three numbers (N, k and m; k, m > 0,
0 < N < 20) and determine the order in which the applicants are sent off for retraining. Each set of
three numbers will be on a separate line and the end of data will be signalled by three zeroes (0 0 0).

Output
For each triplet, output a single line of numbers specifying the order in which people are chosen. Each
number should be in a field of 3 characters. For pairs of numbers list the person chosen by the counterclockwise official first. Separate successive pairs (or singletons) by commas (but there should not be a railing comma).
Note: The symbol ⊔ in the Sample Output below represents a space.

Sample Input
10 4 3
0 0 0

Sample Output
␣␣4␣␣8,␣␣9␣␣5,␣␣3␣␣1,␣␣2␣␣6,␣10,␣␣7

题意:
n(n<20)个人站成一圈,逆时针编号为1~n。有两个官员,A从1开始逆时针数,B从n开始顺时针数。在每一轮中,官员A数k个就停下来,官员B数m个就停下来(注意有可能两个官员停在同一个人上)。接下来被官员选中的人(1个或者2个)离开队伍。输入n,k,m输出每轮里被选中的人的编号(如果有两个人,先输出被A选中的)。例如,n=10,k=4,m=3,输出为48,95,31,26,10,7。注意:输出的每个数应当恰好占3列。

思路:
用一个大小为0的数组表示人站成的圈。为了避免人走之后移动数组元素,用0表示离开队伍的人,数数时跳过即可。

AC代码:

#include <iostream>
#include <cstdio>
int run(int x, int y, int z); // x:数的个数 y:从y开始数 z:数的方向
int arr[22];
int n, k, m;
using namespace std;
int main()
{while (cin >> n >> k >> m){if (n == 0 && k == 0 && m == 0){return 0;}for (int i = 0; i <= n; i++){arr[i] = i;}int num = n, t1 = n, t2 = 1;while (num){t1 = run(k, t1, 1);t2 = run(m, t2, -1);printf("%3d", arr[t1]);num--;if (t1 != t2){printf("%3d", arr[t2]);num--;}arr[t1] = arr[t2] = 0;if (num){cout << ",";}}cout << endl;}return 0;
}int run(int x, int y, int z)
{while (x--){do{y = (y + z + n -1) % n + 1;} while (arr[y] == 0);}return y;
}

【UVA】 133 --- The Dole Queue相关推荐

  1. UVA - 133 ​​​​​​​The Dole Queue

    The Dole Queue UVA - 133 题目传送门 模拟一遍过程,注:可能会选中同一个人 AC代码: #include <cstdio> #include <iostrea ...

  2. 【RDMA】9. RDMA之Queue Pair

    [RDMA]RDMA 学习资料总目录_bandaoyu的笔记-CSDN博客SavirRDMA 分享1. RDMA概述https://blog.csdn.net/bandaoyu/article/det ...

  3. 【UVa】Wavio Sequence(dp)

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  4. 【UVA】11992 - Fast Matrix Operations(段树模板)

    主体段树,要注意,因为有set和add操作,当慵懒的标志下推.递归优先set,后复发add,每次运行set行动add马克清0 WA了好几次是由于计算那一段的时候出问题了,可笑的是我对着模板找了一个多小 ...

  5. 【UVA】【11021】麻球繁衍

    数序期望 刘汝佳老师的白书上的例题--参见白书 1 //UVA 11021 2 #include<cmath> 3 #include<cstdio> 4 #define rep ...

  6. 【UVa】【DP】1633 Dyslexic Gollum

    UVa 1633 Dyslexic Gollum 题目 ◇题目传送门◆(由于UVa较慢,这里提供一份vjudge的链接) ◇题目传送门(vjudge)◆ 题目大意 输入正整数N,KN,KN,K,求长度 ...

  7. 【UVA】11991 Easy Problem from Rujia Liu? (整数v第k次出现在什么位置)

    https://vjudge.net/problem/UVA-11991 题目大意:就是给你一个序列,然后给出k和v,看整数v第k次出现在该序列的什么位置,没有的话就输出0 结构体(略复杂): #in ...

  8. 【UVA】10152 ShellSort (几只乌龟的故事)

    https://vjudge.net/problem/UVA-10152 题目大意: 输入N,给你N个乌龟的名字,下面N行是初始状态,在下面N行是最终状态,你选中这只乌龟以后,只能把它移动到最上面,问 ...

  9. 【UVA】10012 - How Big Is It?(暴力)

    使用DFS枚举所有的安排.每次加入后,当一个圆.他的立场是最大的,并已加入了圆环中的所有切线位置前面. 14383635 10012 How Big Is It? Accepted C++ 0.086 ...

最新文章

  1. Ext JS 4预览:重构和规范渲染过程()
  2. 产品经理这个岗位是否真的可有可无?
  3. DCMTK:使用dcmsr API创建示例结构化报告
  4. Survivor区详解
  5. java面试题34下面关于程序编译说法正确的是()
  6. SQL Server 2012自动备份
  7. modification of global variable “Promise.prototype.finally“ is not allowed when using plugins at app
  8. Magento教程 21:新增客户评价的满意度项目! (Add rating)
  9. 微软python视频教程中文-【译】微软的Python入门教程(一)
  10. java 生成二维码,并跟其他图合成新图 图片添加水印
  11. 不要版面费的期刊名称
  12. IOS开发者证书申请及应用上线发布详解(2014版)
  13. iOS开发--开发者帐号
  14. 基于stc15f2k60s2芯片单片机编程(按键控制)
  15. diamond源码解析
  16. LeetCode_376: 摆动序列
  17. TCP粘包问题以及解决方法
  18. 孕期、哺乳期吃海鲜注意事项----一洲服务
  19. 鸿蒙系统怎么打开纯净模式,#手机[超话]##2021有点东西##OPP... - @安诺颜_ 的微博精选 - 微博国际站...
  20. 非华为手机可以刷鸿蒙系统吗,非华为手机用户,你愿意尝试鸿蒙系统吗?

热门文章

  1. 内网渗透(十一)之内网信息收集-内网IP扫描和发现
  2. Django 第九课 【图书管理系统案例】
  3. tiger语法分析-修改
  4. 步态识别新论文学习——《Gait Lateral Network》
  5. 深度学习(6): 卷积神经网络1——发展及应用
  6. MTK BT/WIFI小析
  7. java怎么键盘录入字符串
  8. Java应用,如何提高系统健壮性
  9. 1060-勇者斗恶龙(BFS)
  10. 互联网产品经理技能树