救济金发放

#include<stdio.h>

int n, k, m, arr[25];


int select(int s, int rec, int count)
{
    while (count--)
    {
        if(rec == 1)
        { 
            //每次都要从本身开始,所以第一次循环是开始处的人,因为数组中1~10的值是1~10,所以对10取模应该从得到的数应该从得到数的上一个+1
            do
            {
                s = (n + s+rec-1) % 10 + 1;
            } while (arr[s] == 0);
        }
        if(rec == -1)
            do
            {
                s = (n + s-2) % 10+1;
            } while (arr[s] == 0);
    }
    return s;
}
int main(void)
{
    scanf("%d %d %d", &n, &k, &m);
    int s1, s2;
    s1 = n;
    s2 = 1;
    int left = n;
    for (int i = 1; i <= n; i++)
        arr[i] = i;
    while (left)
    {
        s1 = select(s1, 1, k);
        s2 = select(s2, -1, m);
        printf("%3d", s1);
        left--;
        if(arr[s1]!=arr[s2])
        { 
            printf("%3d", s2);
            left--;
        }


        arr[s1] = 0;
        arr[s2] = 0;
        if(left)
            printf(",");
    }
    printf("\n");

}

 

posted @ 2020-12-19 20:11  loliconsk  阅读(171)  评论(0)    收藏  举报