士兵队列训练问题

HDU - 1276

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

Input

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

Output

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

Sample Input

2
20
40

Sample Output

1 7 19
1 19 37

思路:n<=3特判直接输出;n>3直接取奇数标号的士兵,vis[i]标记 标号为( i*2-1 )的士兵 是否被去掉,n记录剩余人数

当n<=3时结束循环,输出(注意:最后一个标号后没有空格)

#include <stdio.h>
#include <string.h>
int vis[2505];//直接取奇数 int main()
{int t;scanf("%d",&t);while(t--){memset(vis,0,sizeof(vis));int n;scanf("%d",&n);if(n<=3)//n<=3一定要特判 {if(n==1)printf("1\n");else if(n==2)printf("1 2\n");else if(n==3)printf("1 2 3\n");continue;}if(n%2==1)//直接取奇数标号的士兵 n++;int t=n/2;n=n/2; while(n>3)//n为剩余人数 {int tt=0;for(int i=1;i<=t;i++)//去掉报数为3的士兵 {if(!vis[i]){tt++;if(tt==3){vis[i]=1;n--;tt=0;}}}if(n<=3)break;tt=0;for(int i=1;i<=t;i++)//去掉报数为2的士兵 {if(!vis[i]){tt++;if(tt==2){n--;vis[i]=1;tt=0;}}}  }int i;for(i=1;i<=t;i++)if(!vis[i]){n--;if(n!=0)printf("%d ",2*i-1);elsebreak;    }printf("%d\n",2*i-1);}return 0;
}

hdu 1276 士兵队列训练问题相关推荐

  1. 解题报告:hdu 1276 士兵队列训练问题 - 简单题

    Problem Description 某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行 ...

  2. hdu 1276 士兵队列训练问题 (详解)

    题目 某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,剩下的 ...

  3. HDU - 1276 士兵队列训练问题

    Description 某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报 ...

  4. hdoj 1276 士兵队列训练问题 模拟队列

    士兵队列训练问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S ...

  5. 1276 士兵队列训练问题【队列模拟】

    士兵队列训练问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S ...

  6. c++ HDU 1279 士兵队列训练问题

    题目描述: 某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列, ...

  7. HOJ 1276 士兵队列训练问题(stl, 水题)

    stl, 水题 本题要点: 1.用 list 模拟即可. 2.题目可能的歧义的地方: 有两种选法, 选法1:每2个出列一个, 选法2:每3个出列一个. 结束条件,每完成一种选法后,如果剩下的数 < ...

  8. 士兵队列训练问题 HDU - 1276

    题目 士兵队列训练问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  9. 士兵队列训练问题 (HDU - 1276)

    士兵队列训练问题 题目 题目 某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数 ...

最新文章

  1. UICollectionView入门--使用系统UICollectionViewFlowLayout布局类
  2. 训练AI来检测人类意图,扩大制造领域的人机协作
  3. 英学者研究60亿次通话记录发现:好友再多也没用,最好朋友就4个
  4. 如何编写企业解决方案书(转)
  5. 分布式理论(一)CAP 理论
  6. “智云大咖秀”:大咖摄影师谈惊艳亮相的“大咖级”设备
  7. 离线语法设置 科大讯飞_科大讯飞智能键盘K710评测 输入速度超级加倍
  8. Fast dev didn't succeed, trying another location
  9. docker hive nagasuga_制作一个用来调试hive的docker镜像
  10. 蓝桥杯 ADV-169 算法提高 士兵排队问题
  11. php手册chm打开空白
  12. html文字发亮_css实现发光文字及一点点js特效
  13. 【翻译】Bing-CF-IDF+:语义驱动的新闻推荐系统
  14. python绘图 -- 小猪佩奇源码分享
  15. 结合Java和机器学习技术,如何驾驭大数据提升业务效率和竞争力?
  16. 爱码物联SaaS|一物一码技术如何助力线下流量营销?
  17. 【深度学习】(ICCV-2021)PVT-金字塔 Vision Transformer及PVT_V2
  18. css3宽度变大动画_H5 直播的疯狂点赞动画是如何实现的?
  19. python程序基础题库_智慧职教APPPython程序设计基础题库及答案
  20. Linux 服务器安装部署Jena

热门文章

  1. CCF2020问答匹配比赛:如何只用“bert”夺冠
  2. 良心安利艺术音乐word模板素材网站
  3. 怎么更改计算机开机声音,电脑开机声音,详细教您电脑开机声音怎么更改
  4. 如何系统的自学网络安全
  5. http无状态还是web应用无状态
  6. win10固定到开始屏幕图标不显示
  7. Flutter采坑实录
  8. 粒子群算法python_python实现粒子群算法
  9. java 网上书店设计与实现_(JAVA)网上书店的设计与实现
  10. 关于网站资源“下载”“离线”的问题 ,各位长点心吧