Description

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

Input

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

Output

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

Sample Input

2 20 40
 

Sample Output

1 7 19 1 19 37
 
分析:
  用一个数组将其存下,第一次将下标为偶数的保存,下标为奇数的出列,第二次将i%3==2的数消掉,
然后又按着第一,二次这样循环往复,当数的个数小于,等于3时,输出为被消掉的数的编号。
 
 

#include <iostream>
#include <cstring>
#include <list>
const int maxn=5000+5;
using namespace std;
int main()
{
  int t;
  scanf("%d",&t);
  while (t--)
  {
    int n, a[maxn];
    memset(a, 1, sizeof(a));
    scanf("%d",&n);
    for (int i = 1; i <= n; i++)
    a[i] = i;
    int k = n;
    int loge = 2;
    while (k > 3)
    {
      int q = 0;
      if (loge == 2)
      {
        for (int i = 1; i <= n; i++)
        if (a[i] != 0 && ++q == 2)
        {
          q = 0;
          a[i] = 0;
          k--;
        }
          loge = 3;
      }
      else
      {
        for (int i = 1; i <= n; i++)
        if (a[i] != 0)
        {
          if (a[i] != 0 && ++q == 3)
          {
            q = 0;
            a[i] = 0;
            k--;
          }
        }
        loge = 2;
      }

    }
    loge = 1;
    for (int i = 1; i <= n; i++)
    if (a[i] != 0)
    if (loge)
    {
      cout << i;
      loge = 0;
    }
    else
      cout << ' ' << i;

     cout << endl;
  }

return 0;

}

最新文章

  1. MSSQL&mdash;按照某一列分组后取前N条记录
  2. oracle select into 的时候提示未找到数据
  3. IT人的自我导向型学习:学习的4个层次
  4. nodejs爬虫
  5. wp8.1 Study6: App的生命周期管理
  6. 理解perl的编码转换——utf8以及乱码
  7. Swift之贪婪的UIButton
  8. Cordova for android怎样在App中处理退出button事件
  9. BZOJ 1096 ZJOI2007 仓库建设 边坡优化
  10. Android在初始化时弹出popwindow的方法
  11. react-native react-navigation StackNavigator android导航栏 标题下居中
  12. 实验5 IIC通讯与AD/接DA接口
  13. web api 多版本控制重要的两个类
  14. Python 随机数函数
  15. DataGridView滚动慢​的解决方法
  16. 第二十一次ScrumMeeting会议
  17. [emqttd] (EMQ)
  18. English 好的报纸
  19. BZOJ4819 [Sdoi2017]新生舞会 【01分数规划 + 费用流】
  20. HDU 6076 Security Check DP递推优化

热门文章

  1. Java Performance - 优化和分析Garbage Collection/垃圾收集
  2. LinuxShell脚本攻略--第二章 命令之乐
  3. listview定位到上次显示的位置
  4. reveal 1.6.3 本机破解及使用
  5. SSIS包部署
  6. DI 之 3.3 更多DI的知识(陆)
  7. Nginx内置常用变量
  8. ajax正确的简单封装“姿势”
  9. Ubuntu 14.04 分区方案
  10. (05)odoo数据库和业务操作