码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 1276 士兵队列训练问题

时间:2015-07-21 13:00:06      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:

Description

某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,剩下的向小序号方向靠拢,继续从头开始进行一至二报数。。。,以后从头开始轮流进行一至二报数、一至三报数直到剩下的人数不超过三人为止。      
       

Input

本题有多个测试数据组,第一行为组数N,接着为N行新兵人数,新兵人数不超过5000。       
       

Output

共有N行,分别对应输入的新兵人数,每行输出剩下的新兵最初的编号,编号之间有一个空格。       
       

Sample Input

2 20 40
               

Sample Output

1 7 19 1 19 37
题意:
n个士兵按1~n的顺序排好,首先从左到右报数,1~2交替,报到2的出队,然后再从左到右1~3交替报数,报到3的出队,循环这两个过程,直到队列的人数<=3为止。最后输出剩下人的最初编号。
思路:
直接模拟着两个过程,直到人数<=3为止,最后输出结果。
代码:
#include<cstdio>
int a[5001];
//using namespace std;
int main()
{
    int N,x,b,c;
    scanf("%d",&N);
    while(N--)
    {

        scanf("%d",&x);
        b=x;
        for(int i=1;i<=x;i++)
            a[i]=i;
            while(b>3)
            {
                c=0;
            for(int i=1;i<=x;i++)
            {
               if(a[i]==0)   continue;
               else c+=1;
               if(c==2)
               {
                   a[i]=0;
                   c=0;
               }
            }
            b=b-b/2;
            if(b<=3)   break;
            c=0;
            for(int i=1;i<=x;i++)
            {
                if(a[i]==0)   continue;
                else c+=1;
                if(c==3)
                {
                   a[i]=0;
                   c=0;
                }

            }
             b=b-b/3;
            }
            c=0;
            for(int i=1;i<=x;i++)
            {
                if(a[i]==0)   continue;
                else
                {
                    c+=1;
                    if(c==b)
                        printf("%d\n",a[i]);
                    else
                        printf("%d ",a[i]);

                }

            }




    }
  return 0;
}

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

HDU 1276 士兵队列训练问题

标签:

原文地址:http://blog.csdn.net/a1967919189/article/details/46982119

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!