UVA-133 The Dole Queue
来源:互联网 发布:linux软件下载 编辑:程序博客网 时间:2024/06/08 09:00
2016-08-18
UVA - 133 The Dole Queue
题目大意:N 个人围成环逆时针编号,逆时针从 1 开始数第 k 个出列,顺时针从 N 开始数第 m 个人出列,若数到同一个人,出列一次。下一轮从当前位置开始数,直至所有人出列。输出编号,宽度 3。
解题思路:编号,循环查找,下标到 0 时改为 N,为 N+1 时改为 1,使数组头尾连接。出列后编号改为 0,计数时跳过。
注意:要两个都找到再判断是否相同,输出。
#include <iostream>#include <cstdio>#include <cstring>using namespace std;int que[25];int main() {int N, k, m;while ( ~scanf("%d%d%d", &N, &k, &m) ) {int flag = N;if ( !N && !k && !m )break;memset (que, 0, sizeof(que));for (int i = 1; i <= N; i++)que[i] = i;int a = 1, b = N;while (1) {while ( !que[a] ) {a++;if ( a == N+1 )a = 1;}while ( !que[b] ) {b--;if ( b == 0 )b = N;}for (int i = 1; i < k; i++) {a++;if ( a == N+1 )a = 1;if ( !que[a] )i--;}for (int i = 1; i < m; i++) {b--;if ( b == 0 )b = N;if ( !que[b] )i--;}if ( b != a ) {printf("%3d%3d", que[a], que[b]);que[a] = 0;que[b] = 0;flag -= 2;}if ( a == b ) {printf("%3d", que[a]);que[a] = 0;flag--;}if ( flag )cout << ",";elsebreak;}cout << endl;}return 0;}
0 0
- UVa 133 The Dole Queue
- Uva 133 The Dole Queue
- uva 133 - The Dole Queue
- uva-133 - The Dole Queue
- UVa 133 - The Dole Queue
- uva 133 The Dole Queue
- UVa 133 - The Dole Queue
- UVa 133 - The Dole Queue
- uva 133 - The Dole Queue
- uva-133 The Dole Queue
- UVA 133 The Dole Queue
- UVa 133 - The Dole Queue
- uva 133 - The Dole Queue
- uva 133 The Dole Queue
- UVa 133 The Dole Queue
- uva 133 - The Dole Queue
- uva 133 - The Dole Queue
- UVa 133 - The Dole Queue
- fidle 域名代替ip访问
- 前端开发--经验浅谈
- poj 3312 水题
- ZZULI 1921: B
- poj2406(KMP 求循环节的个数)Power Strings --
- UVA-133 The Dole Queue
- 【Java】Java基础知识总结
- 每天工作4小时的程序员
- 数据结构实验之图论八:欧拉回路
- Adding Animations之Zooming a View
- SDUT2104图结构练习——判断给定图是否存在合法拓扑序列
- JZOJ3083. 【NOIP2012模拟11.1】塔(加强)
- poj 1837 Balance
- 【POJ3264】Balanced Lineup