#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#define maxn 25
int num[maxn];
int go(int base, int dir, int step);
int main(void)
{
int n, k, m;
while (scanf("%d%d%d", &n, &k, &m) == 3)
{
int left = n;
int pA = 10;
int pB = 1;
for (int i = 1; i <= n; i++)
{
num[i] = i;
}
for (; left != 0;)
{
pA = go(pA,1,k);
pB = go(pB,-1,m);
if (pA == pB)
{
left--;
printf("%3d", pA);
num[pA]=0;
if(left==0) printf(".");
else printf(",");
}
else
{
left -= 2;
printf("%3d%3d", pA, pB);
num[pA]=0;
num[pB]=0;
if(left==0) printf(".");
else printf(",");
}
// printf("left=%d\n", left);
}
}
return 0;
}
int go(int base, int dir, int step)
{
switch (dir)
{
case 1:
{
int result=base;
for (int i = 0; i < step;)
{
result = result % 10+1;
if (num[result] != 0)
{
i++;
}
}
//num[result] = 0;
//因为二者可能选的是同一个,所以数组赋值不能那么快操作
return result;
}
case -1:
{
int result = base;
for (int i = 0; i < step;)
{
result = (result + 8) % 10 + 1;
if (num[result] != 0)
{
i++;
}
}
//num[result] = 0;
return result;
}
}
}
UVA133
最新推荐文章于 2024-07-23 14:02:12 发布