您的位置:首页 > 产品设计 > UI/UE

UVA - 133 The Dole Queue

2016-07-21 19:14 399 查看

UVA - 133 The Dole Queue

题目大意:n个人逆时针编号围成一个圈,两个考官一个从1逆时针点人,每次点k个,另一个从n顺时针点人,每次点m个,当被点到的人不同时输出 a b,同一个人时输出 a,每个数字占三个场宽。

解题思路:用数组模拟 定义两个变量标记数的位置,输完输出来就可以了,值得注意的,已经被点到的人是跳过 不用数的

/*************************************************************************
> File Name: UVA-133.cpp
> Author: Robin
> Mail: 499549060@qq.com
> Created Time: 2016年07月21日 星期四 10时24分43秒
************************************************************************/

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
int main() {
int n[30];
int k, m, N;
int a,b;
while (scanf("%d%d%d", &N, &k, &m) && (N || k || m)) {
int flag = N;
memset(n, 0, sizeof(n));
a = 0;
b = N + 1;
while (1) {
for (int i = 0; i < k; i++) {
a++;
if (a == N + 1) a = 1;
while (n[a]){
a++;
if (a == N + 1) a = 1;
}
}

for (int i = 0; i < m; i++) {
b--;
if (b == 0) b = N;
while (n[b]){
b--;
if (b == 0) b = N;
}
}
printf("%3d", a);
flag--;
n[a] = 1;
if ( a != b) {
printf("%3d", b);
n[b] = 1;
flag--;
}
if (flag == 0) break;
printf(",");
}
printf("\n");

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: