数学—士兵队列训练问题
来源:互联网 发布:淘宝开店教程全集下载 编辑:程序博客网 时间:2024/06/02 07:07
注意:士兵数可能开始就<4.
I - 士兵队列训练问题
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmit
Status
Description
某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,剩下的向小序号方向靠拢,继续从头开始进行一至二报数。。。,以后从头开始轮流进行一至二报数、一至三报数直到剩下的人数不超过三人为止。
Input
本题有多个测试数据组,第一行为组数N,接着为N行新兵人数,新兵人数不超过5000。
Output
共有N行,分别对应输入的新兵人数,每行输出剩下的新兵最初的编号,编号之间有一个空格。
Sample Input
2
20
40
Sample Output
1 7 19
1 19 37
代码:
#include<cstdio>#include<cstring>#include<algorithm>using namespace std; int yi[5050],er[5050];void xiao(int ss){for (int i=1;i<=ss;i++)er[i]=i;int ke;while (1){if (ss<4)//士兵数开始<4,直接输出。 {printf("%d",er[1]);for (int i=2;i<=ss;i++)printf(" %d",er[i]);printf("\n");break; }ke=0;for (int i=1;i<=ss;i++){if (i%2!=0){ke++; yi[ke]=er[i]; }}if (ke<4){printf("%d",yi[1]);for (int i=2;i<=ke;i++)printf(" %d",yi[i]);printf("\n");break;}ss=0;for (int i=1;i<=ke;i++){if (i%3!=0){ss++; er[ss]=yi[i];}}/*if (ss<4)//未考虑开始士兵树小于4; {printf("%d",er[1]);for (int i=2;i<=ss;i++)printf(" %d",er[i]);printf("\n");break; }*/}}int main(){int n,shu[120];scanf("%d",&n);for (int i=1;i<=n;i++)scanf("%d",&shu[i]);for (int i=1;i<=n;i++)xiao(shu[i]);return 0;}
0 0
- 数学—士兵队列训练问题
- HDU1276:士兵队列训练问题
- hdu_1276 士兵队列训练问题
- HDU1274 士兵队列训练问题
- 1276 士兵队列训练问题
- HDU1276 士兵队列训练问题
- 士兵队列训练问题
- 1276 士兵队列训练问题
- 士兵队列训练问题
- 士兵队列训练问题
- ACM-士兵队列训练问题
- B - 士兵队列训练问题
- hdoj1276士兵队列训练问题
- 士兵队列训练问题
- 士兵队列训练问题
- HDU1276-士兵队列训练问题
- 士兵队列训练问题 HDU
- 士兵队列训练问题
- hadoop 学习笔记
- windows客户端开发--根据可下载url另存为文件(微信windows客户端这样做的)
- [leetcode 108] Convert Sorted Array to Binary Search Tree
- 标准差(Standard Deviation) 和 标准误差(Standard Error)
- hadoop生态系统学习之路(一)Cloudera Manager一键安装
- 数学—士兵队列训练问题
- Linux文件系统及常用命令
- pdo数据库操作类
- 九度OJ 1471-1480(10/10)
- 【杭电oj】1896 - Stones(优先队列)
- Gray Code
- 求奇数的乘积
- 206. Reverse Linked List
- [刷题] Merge k Sorted Arrays