• uva-133 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 3
    0 0 0

     

    Sample output

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

    where tex2html_wrap_inline50 represents a space.

    这个题的意思是给你一个长度为N的循环队列,一个人从1号开始逆时针开始数数,第K个出列,一个人从第N个人开始顺时针数数,第M个出列,选到的两个人要同时出列(以不影响另一个人数数),选到同一个人只出队一次。

    解题思想:用数组模拟,arr[i]等于0时表示第I个人出列。

     

    #include <iostream>
    #include<deque>
    #include<algorithm>
    #include<cstdio>
    
    using namespace std;
    int main()
    {
    
        int n,k,m,size;
        int arr[20];
        while(cin>>n>>k>>m)
        {
            if(n==0&&k==0&&m==0)break;
            int p=0,q=n-1;
            size=n;
            for(int i=0; i<n; i++)
                arr[i]=i+1;
            while(size>0)
            {
                for(int i=1; i<k; i++)
                {
                    p=(p+1)%n;
                    if(!arr[p])i--;
                }
                for(int i=1; i<m; i++)
                {
                    q=(q-1+n)%n;
                    if(!arr[q])i--;
                }
                if(arr[p])
                {
                    printf("%3d",arr[p]);
                    arr[p]=0;
                    size--;
                }
                if(arr[q])
                {
                    printf("%3d",arr[q]);
                    arr[q]=0;
                    size--;
                }
                for(int i=0; i<n; i++)
                {
                    p=(p+1)%n;
                    if(arr[p])break;
                }
                for(int i=0; i<n; i++)
                {
                    q=(q-1+n)%n;
                    if(arr[q])break;
                }
                if(size)printf(",");
                else printf("
    ");
            }
        }
        return 0;
    }


  • 相关阅读:
    利用XShell上传、下载文件(使用sz与rz命令)
    我做的一个websocket的demo(php server)
    linux下如何实现mysql数据库每天自动备份定时备份
    php利用ob缓存机制实现页面静态化方法全解
    MySQL数据备份之mysqldump使用
    将jpg压缩成webp格式的图片
    ab网站压力测试命令的参数、输出结果的中文注解
    网页优化实例
    JQ 为未来元素添加事件处理器—事件委托
    Web前端优化最佳实践及工具集锦
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3172275.html
Copyright © 2020-2023  润新知