#include<stdio.h>
int main()
{
int a[1000] = {0}, flag[1000] = {0}, n, k;
int count = 1, j = 0, sum = 0, wj; // j控制下标,count控制报数,wj是玩家标号;
scanf("%d%d", &n, &k);
for(int i = 0; i < n; i++)
flag[i] = 1; // 1表示在游戏中,0表示被踢出游戏;
while(1)
{
j %= n; // 实现下标循环;
if(flag[j] == 1)
{
a[j] = count++;
if(a[j] % k == 0 || a[j] % 10 == k)
flag[j] = 0;
}
else if(flag[j] == 0)
{
j++; // 若玩家被踢出,则下移到另一个玩家,但报数不变;
continue;
}
/* putchar('\n');
for(int m = 0; m < n; m++)
printf("%d ", a[m]);
putchar('\n');
for(int m = 0; m < n; m++)
printf("%d ", flag[m]);
*/ // 测试代码段,输出 a 数组与 flag 数组的值;
j++;
for(wj = 0; wj < n; wj++)
{
if(flag[wj] == 1)
sum++;
}
if(sum == 1)
{
break;
}
sum = 0;
}
for(int q = 0; q < n; q++)
{
if(flag[q] == 1)
printf("%d", q + 1);
}
return 0;
}
CCF认证-201712-2-游戏 C语言代码实现(100分)
最新推荐文章于 2020-02-08 19:58:07 发布