士兵队列训练问题

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 4783    Accepted Submission(s): 2240

Problem Description
某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,剩下的向小序号方向靠拢,继续从头开始进行一至二报数。。。,以后从头开始轮流进行一至二报数、一至三报数直到剩下的人数不超过三人为止。
 
Input
本题有多个测试数据组,第一行为组数N,接着为N行新兵人数,新兵人数不超过5000。
 
Output
共有N行,分别对应输入的新兵人数,每行输出剩下的新兵最初的编号,编号之间有一个空格。
 
Sample Input
2
20
40
 
Sample Output
1 7 19
1 19 37
 
Author
Cai Minglun
 
Source
 
Recommend
lcy   |   We have carefully selected several similar problems for you:  1282 1279 1274 1237 1256

#include<stdio.h>
#include<string.h>
int num[10000+10];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&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");
else
{
memset(num,0,sizeof(num));//标记数组清零
int ans=n,cnt=0;
int s;
while(true)
{
if(ans<=3) break;
int j=1;
if(cnt%2==0) s=2;
else s=3;
//判断当前是除以2还是3,cnt相当于计数变量,记录圈数
cnt++;
for(int i=1;i<=n;i++)
{
if(!num[i])
{
if(j%s==0)
{
num[i]=1;ans--;j=1;
//是s的倍数的话就要出队,人数减一,标记
}
else j++;
}
}
}
int b[4];
int j=0;
for(int i=1;i<=n;i++)
{
if(!num[i])
{
b[j++]=i;//因为有输出格式的限制,所以先把数据取出来
}
}
printf("%d",b[0]);
for(int i=1;i<ans;i++)
printf(" %d",b[i]);
printf("\n");
}
}
return 0;
}

最新文章

  1. Oracle学习笔记十三 触发器
  2. mysql中You can&#39;t specify target table for update in FROM clause错误
  3. WPF ComboBox Binding
  4. ligerui_ligerTree_004_对&quot;ligerTree&quot;节点操作
  5. php经典笔试题
  6. json处理复杂对象jsonConfig
  7. Linux下动态调整LVM文件系统大小
  8. mysql表结构设计
  9. Oracle SQL自带函数整理
  10. PHP实反向代理-收藏
  11. DOM 和 BOM 的 对象 和方法
  12. 【学习】js学习笔记:数组(二)
  13. 什么是 core dump ? 以及如何使用gdb对 core dumped 进行调试
  14. Eclipse中快速打开文件所在的文件夹位置
  15. 第三次作业 (一)----------------------Visual Studio 2015的安装及单元测试
  16. uigrid配置详解(1)
  17. flask操作mongo两种方式--ORM
  18. FreeRTOS基础知识
  19. iOS:关于UIView切角的两种实现方式
  20. ERROR 2002 (HY000): Can&#39;t connect to local MySQL server through socket &#39;/var/run/mysqld/mysqld.sock&#39; (2)-mysql.sock丢失解决方案

热门文章

  1. tinyxml使用
  2. Hadoop MapReduce编程 API入门系列之FOF(Fund of Fund)(二十三)
  3. 使用C#正则表达式获取必应每日图片地址
  4. LayoutInflater源码解析
  5. CI中的分页
  6. 管窥python语法
  7. Java代码运用及算法思路养成——用*号输出形状
  8. Tjoi2019 甲苯先生和大中锋的字符串 后缀自动机_差分
  9. 了解http协议
  10. alg--动态规划(dynamic planning)