CCF201712-2 游戏(100分)C语言

#include <stdio.h>

//环形循环队列实现,数组数据为0代表小朋友淘汰,不为0加1则代表小朋友编号

int main(){

    int a[1000] = {0};

    int n, k = 0;

    scanf("%d",&n);

    scanf("%d",&k);

//num代表每次的报数,front,rear分别为队列头和队列尾

    int num = 0, i = 0, front = 0, temp = 0;

    int rear = n - 1;

//小朋友赋值对应编号

    for(i = 0; i < n; i++) a[i] = i+1;

    while(front != rear){

        num++;

        if(( num % k) == 0 || ( num % 10) == k) {

            a[front] = 0;

            front = (front + 1) % n;

        }

        else{

//队列头的元素插入队列尾后删除

            temp = a[front];

            a[front] = 0;

            front = (front + 1) % n;

            rear = (rear + 1) % n;

            a[rear] = temp;

        }

    }

    printf("%d",a[front]);

    return 0;

}

 

猜你喜欢

转载自blog.csdn.net/qq_29639589/article/details/79393596
今日推荐