这道题我觉得是个简单的模拟题,整理一下思路,弄清楚题意就好了。

新手上路,采用两个数组进行交互赋值,用的方法也比较笨,思路差不多都在代码的注释里了。

下面是题目大意:

首先将士兵从1开始编号(士兵总数不超过5000),然后开始1 2 1 2...报数,报到2的士兵出列,剩下的向小序号方向靠拢,然后按照1 2 3 1 2 3... 报数,报到3的出列。以此类推(1 2 1 2...报数后再1 2 3 1 2 3...报数),直到剩下的士兵人数不超过3人,并且输出他们原来的编号。

格式要求如下:
第一行表示的是一个测试组数N,下面N行是每个案例士兵人数。
 
Sample Input
2
20
40
 
Sample Output
1 7 19
1 19 37 
 #include<iostream>
 #include<string.h>
 using namespace std;

 ],b[],c;//我一般比较喜欢定义为全局变量

 int main()
 {
     cin >> N;
     while(N--)
     {
         memset(a,,sizeof(a));//初始化一下两个要用到的数组
         memset(b,,sizeof(b));
         cin >> n;
         ;i<=n;i++)
             a[i]=i;//为n个新兵进行编号
         )//人数大于3的时候执行循环内的语句
         {
             ,j=;i<=n;i++)
             {
                 !=)//1 2 1 2...报数导致a数组下标为偶数的全报的2,应当剔除
                 {
                     b[j]=a[i];//把a数组内下标为奇数的数放到b数组内
                     j++;
                 }
             }
             c=j-;//j在执行完最后一个赋值后,又执行了一次j++,所以留下的士兵应该为j-1
             )//如果满足条件,直接输出,结束此次循环
             {
                 ;i<c;i++)
                     cout<<b[i]<<' ';
                 cout<<b[c]<<endl;
                 break;
             }
             ,i=;j<=c;j++)//1 2 3 1 2 3...报数
             {
                 !=)
                 {
                     a[i]=b[j];//把b数组内下标为3的倍数的数放到a数组内
                     i++;
                 }
             }
             n=i-;//同上面的c=j-1;
         }
         )
         {
             ;i<n;i++)
                 cout<<a[i]<<' ';
             cout<<a[n]<<endl;
         }
     }
     ;
 }
 

2016HUAS_ACM暑假集训1A - 士兵队列训练问题的更多相关文章

  1. 2016HUAS_ACM暑假集训2D - 敌兵布阵

    刚开始接触线段树,不得不说,每次接触到一个新的数据结构,都会是一场头脑风暴的“盛宴”.希望我能继续痛苦并快乐着学下去.我相信,有各路大神的博客相助,我还是能坚持下去的. 这个题目是HDU的1166,只 ...

  2. 2016HUAS_ACM暑假集训4C - 递推

    题目大意:给你一个高为n ,宽为m列的网格,计算出这个网格中有多少个矩形. 这里我们可以这样看: 对于行:假如是m单位长度,则长度为1的矩形有m个,长度为2的矩形有m-1个......长度为m的只有1 ...

  3. 2016HUAS_ACM暑假集训4A - 递推

    利用组合公式C(n,m)=C(n-1,m)+C(n-1,m-1).也就是从n个数里面选择m个数.按递增方式放在每一层循环. 杨辉三角+二项式定理,还真是挺有“意思”的一道题.说实话,非原创.见谅... ...

  4. 2016HUAS_ACM暑假集训4D - 计数,排列

    一个错排公式的基础应用. 大致题意:求n个数的错误排列方式.(每个都要错) 在这里先贴一下错排公式:D(1)=0:D(2)=1:D(n)=(n-1)*(D(n-1)+D(n-2)) 它的推导也非常有意 ...

  5. 2016HUAS_ACM暑假集训4M - 基础DP

    简单的0-1背包问题,大家都会做的.题意不想解释太多. 简述题目的案例及以几个关键 Sample Input 1                            //测试组数T 5 10     ...

  6. 2016HUAS_ACM暑假集训4K - 基础DP

    我不知道怎么用DP,不过DFS挺好用.DFS思路很明显,搜索.记录,如果刚好找到总价值的一半就说明搜索成功. 题目大意:每组6个数,分别表示价值1到6的物品个数.现在问你能不能根据价值均分. Samp ...

  7. 2016HUAS_ACM暑假集训4F - 数论

    这个题目,如果没找到方向,确实有点一头雾水.但是如果你找对方向了,AC是分分钟的事.答案就是看n和m是否有除1之外的公约数. 简单证明:设n和m最大公约数不是1,假设为p.n和m总可以化为一个数乘以k ...

  8. 2016HUAS_ACM暑假集训4B - 递推

    这种数学推理题目题意极其明显,在做的时候,可以多写几组,这样找起规律来会容易些.概括起来就是:题意简单暴力,案例毫无价值. 一个三角形最多可以把一个平面分成两部分,两个三角形最多是8(2+6)部分,而 ...

  9. 2016HUAS_ACM暑假集训3G - 还是畅通工程

    最小生成树,题目简单.套的Prim模板,其他的题目比较有意义. Sample Input 3                             //村庄个数1 2 1               ...

随机推荐

  1. <hr/> 水平线样式

    <hr style="width:490px;" /> <hr size=8 style="COLOR: #ffd306;border-style:ou ...

  2. python uuid、hex study

    由 import uuid product[“SourceInfo"]["ProductID"] = uuid.uuid4().hex 引起的uuid 一.概述 uuid ...

  3. js中对radio和checkbox是否选中的判断

    一.js判断checkbox 例如:<div class="checkbox" style="width: 150px;"> <label&g ...

  4. stm32cube--IWDG使用

    IWDG使用的是32芯片内部的40k独立晶振,该晶振为rtc和iwdg提供时钟,即使是主时钟坏了也不影响它们. 主要用到三个寄存器, IWDG_KR    键值寄存器 IWDG_PR     预分频寄 ...

  5. 从零搭建mongo分片集群的简洁方法

    一.目录 1.mongo路径,config数据路径,shard数据路径

  6. iOS用ASIHttpRequest上传

    1.新建一个single view工程,导入ASIHttpRequest库,导入MobileCoreServices.CFNetwork.SystemConfiguration和libz1.2.5.d ...

  7. .NET 4.5 WPF Ribbon

    文/嶽永鹏 Visual Studio 2012  DO.NET 4.5 Ribbon 界面编程. 代码 =============================================== ...

  8. css定位之绝对定位

    绝对定位可以做很多事情,如广告位,弹出框,遮罩层等一些功能 css的定位方式:1.静态定位, 2.绝对定位(固定定位和绝对定位) ,3.相对定位 绝对定位会受到影响的因素有 1.属性的取值. 2.元素 ...

  9. java string.format()

    String text=String.format("$%1$s 门市价:¥%2$s",18.6,22);$18.6 门市价:¥22

  10. 原生javascript和jquery实现简单的ajax例子

    后台C#代码 public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/p ...