UVA 133

来源:互联网 发布:免费注册域名送空间 编辑:程序博客网 时间:2024/06/05 17:40


The Dole Queue

In a serious attempt to downsize (reduce) the dole queue, The New National Green Labour Rhinoceros Party has decided on the following strategy.  Every day all dole applicants will be placed in a large circle, facing inwards.  Someone is arbitrarily chosen as number 1, and the rest are numbered counter-clockwise up to N (who will be standing on 1's left).  Starting from 1 and moving counter-clockwise, one labour official counts off k applicants, while another official starts from N and moves clockwise, counting m applicants.  The two who are chosen are then sent off for retraining; if both officials pick the same person she (he) is sent off to become a politician.  Each official then starts counting again at the next available person and the process continues until no-one is left.  Note that the two victims (sorry, trainees) leave the ring simultaneously, so it is possible for one official to count a person already selected by the other official.

 

Input

Write a program that will successively read in (in that order) the three numbers (N, k and m; k, m > 0, 0 < N < 20) and determine the order in which the applicants are sent off for retraining.  Each set of three numbers will be on a separate line and the end of data will be signalled by three zeroes (0 0 0).

Output

For each triplet, output a single line of numbers specifying the order in which people are chosen.  Each number should be in a field of 3 characters.  For pairs of numbers list the person chosen by the counter-clockwise official first.  Separate successive pairs (or singletons) by commas (but there should not be a trailing comma).

Sample input

10 4 30 0 0

Sample output

tex2html_wrap_inline34 4tex2html_wrap_inline34 8,tex2html_wrap_inline34 9tex2html_wrap_inline34 5,tex2html_wrap_inline34 3tex2html_wrap_inline34 1,tex2html_wrap_inline34 2tex2html_wrap_inline34 6,tex2html_wrap_inline50 10,tex2html_wrap_inline34 7

where tex2html_wrap_inline50represents a space.

 

 

 

/*
 用链表做


 */
package one;

import java.util.Scanner;

/**
 *
 * @author Administrator
 */
public class a133_5 {

    static Node1 Head1, Head2, p1, p2;

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            Head1 = null;
            Head2 = null;
            int n = in.nextInt();
            int a = in.nextInt();
            int b = in.nextInt();
            if (n == 0 && a == 0 && b == 0) {
                break;
            }
            Creat_List(n);
            Update_List(n, a, b);

        }
    }

    static void Creat_List(int n) {
        for (int i =1; i <= n; i++) {
            p1 = new Node1();
            if (i == 1) {
                p1.date = i;
                p2 = p1;
                Head1 = p1;
            } else {
                p1.date = i;
                p2.pNext1 = p1;
                p1.pNext2 = p2;
                p2 = p1;
            }
            p1.pNext1 = Head1;
            Head1.pNext2 = p1;
            Head2 = p1;
        }
    }

    static void Update_List(int n, int a, int b) {
        p1 = Head1;
        p2 = Head2;
        while (n != 0) {
            for (int i = 1; i < a; i++) {
                p1 = p1.pNext1;
            }
            for (int i = 1; i < b; i++) {
                p2 = p2.pNext2;
            }
            if (p1.date == p2.date) {
                System.out.printf("%3d", p2.date);
                p1.pNext2.pNext1 = p1.pNext1;
                p1.pNext1.pNext2 = p1.pNext2;

                p1 = p1.pNext1;
                p2 = p1.pNext2;
                n -= 1;
            } else {
                System.out.printf("%3d%3d", p1.date, p2.date);
                p1.pNext2.pNext1 = p1.pNext1;
                p1.pNext1.pNext2 = p1.pNext2;

                if (p2 == p1.pNext1) {
                    p1 = p1.pNext1.pNext1;

                } else {
                    p1 = p1.pNext1;
                }
                p2.pNext2.pNext1 = p2.pNext1;
                p2.pNext1.pNext2 = p2.pNext2;
                p2 = p2.pNext2;
                n -= 2;
            }
            if (n != 0) {
                System.out.print(",");
            }
        }
        System.out.println("");
    }
}

class Node1 {

    int date;
    Node1 pNext1;
    Node1 pNext2;

    public Node1() {
    }
}

原创粉丝点击