【UVA】 133 --- The Dole Queue
【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相关推荐
- UVA - 133 The Dole Queue
The Dole Queue UVA - 133 题目传送门 模拟一遍过程,注:可能会选中同一个人 AC代码: #include <cstdio> #include <iostrea ...
- 【RDMA】9. RDMA之Queue Pair
[RDMA]RDMA 学习资料总目录_bandaoyu的笔记-CSDN博客SavirRDMA 分享1. RDMA概述https://blog.csdn.net/bandaoyu/article/det ...
- 【UVa】Wavio Sequence(dp)
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
- 【UVA】11992 - Fast Matrix Operations(段树模板)
主体段树,要注意,因为有set和add操作,当慵懒的标志下推.递归优先set,后复发add,每次运行set行动add马克清0 WA了好几次是由于计算那一段的时候出问题了,可笑的是我对着模板找了一个多小 ...
- 【UVA】【11021】麻球繁衍
数序期望 刘汝佳老师的白书上的例题--参见白书 1 //UVA 11021 2 #include<cmath> 3 #include<cstdio> 4 #define rep ...
- 【UVa】【DP】1633 Dyslexic Gollum
UVa 1633 Dyslexic Gollum 题目 ◇题目传送门◆(由于UVa较慢,这里提供一份vjudge的链接) ◇题目传送门(vjudge)◆ 题目大意 输入正整数N,KN,KN,K,求长度 ...
- 【UVA】11991 Easy Problem from Rujia Liu? (整数v第k次出现在什么位置)
https://vjudge.net/problem/UVA-11991 题目大意:就是给你一个序列,然后给出k和v,看整数v第k次出现在该序列的什么位置,没有的话就输出0 结构体(略复杂): #in ...
- 【UVA】10152 ShellSort (几只乌龟的故事)
https://vjudge.net/problem/UVA-10152 题目大意: 输入N,给你N个乌龟的名字,下面N行是初始状态,在下面N行是最终状态,你选中这只乌龟以后,只能把它移动到最上面,问 ...
- 【UVA】10012 - How Big Is It?(暴力)
使用DFS枚举所有的安排.每次加入后,当一个圆.他的立场是最大的,并已加入了圆环中的所有切线位置前面. 14383635 10012 How Big Is It? Accepted C++ 0.086 ...
最新文章
- Ext JS 4预览:重构和规范渲染过程()
- 产品经理这个岗位是否真的可有可无?
- DCMTK:使用dcmsr API创建示例结构化报告
- Survivor区详解
- java面试题34下面关于程序编译说法正确的是()
- SQL Server 2012自动备份
- modification of global variable “Promise.prototype.finally“ is not allowed when using plugins at app
- Magento教程 21:新增客户评价的满意度项目! (Add rating)
- 微软python视频教程中文-【译】微软的Python入门教程(一)
- java 生成二维码,并跟其他图合成新图 图片添加水印
- 不要版面费的期刊名称
- IOS开发者证书申请及应用上线发布详解(2014版)
- iOS开发--开发者帐号
- 基于stc15f2k60s2芯片单片机编程(按键控制)
- diamond源码解析
- LeetCode_376: 摆动序列
- TCP粘包问题以及解决方法
- 孕期、哺乳期吃海鲜注意事项----一洲服务
- 鸿蒙系统怎么打开纯净模式,#手机[超话]##2021有点东西##OPP... - @安诺颜_ 的微博精选 - 微博国际站...
- 非华为手机可以刷鸿蒙系统吗,非华为手机用户,你愿意尝试鸿蒙系统吗?