zoukankan      html  css  js  c++  java
  • hdu1276 士兵队列训练问题(STL的list)


    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1276


    题目描述:

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


    Input

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


    Output

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


    Sample Input

    2

    20

    40


    Sample Output

    1 7 19

    1 19 37


     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 const int MAXN=5500;
     4 int main(){
     5     int n,m;
     6     cin>>n;
     7     while(n--){
     8         cin>>m;
     9         int k=2;
    10         list<int> mylist;
    11         list<int>::iterator it;
    12         for(int i=1;i<=m;i++)
    13             mylist.push_back(i);
    14         while(mylist.size()>3){
    15             int num=1;
    16             for(it=mylist.begin();it!=mylist.end();){
    17                 if(num++%k==0)
    18                     it=mylist.erase(it);
    19                 else
    20                     it++;
    21             }
    22             k==2?k=3:k=2;
    23         }
    24         for(it=mylist.begin();it!=mylist.end();it++){
    25             if(it!=mylist.begin())
    26                 cout<<" ";
    27             cout<<*it;
    28         }
    29         cout<<endl;
    30     }
    31     return 0;
    32 }
  • 相关阅读:
    模型层
    视图层,模板层
    ORM表关系建立
    CMakeList入门
    C++标准模板库
    C++基本语法
    g++应用说明
    Linux快捷键
    Git 操作备忘
    Block的详细介绍
  • 原文地址:https://www.cnblogs.com/ZKYAAA/p/12637557.html
Copyright © 2011-2022 走看看