新兵训练(=@__@=)
2015-07-24 23:11
239 查看
题意:
Description
某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,剩下的向小序号方向靠拢,继续从头开始进行一至二报数。。。,以后从头开始轮流进行一至二报数、一至三报数直到剩下的人数不超过三人为止。
Input
本题有多个测试数据组,第一行为组数N,接着为N行新兵人数,新兵人数不超过5000。
Output
共有N行,分别对应输入的新兵人数,每行输出剩下的新兵最初的编号,编号之间有一个空格。
Sample Input
2
20
40
Sample Output
1 7 19
1 19 37
思路:
士兵1-2报数时,用循环加公式i % 2 + 1 == 2把报到2的士兵找出来,将他们的编号变大,计算剩下的人,重新从大到小排列,士兵1-3报数也是如此。最后剩下三人就只要输出数组的前三个数就好了。
源代码:
心得:
感觉良好。。。加油!
Description
某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,剩下的向小序号方向靠拢,继续从头开始进行一至二报数。。。,以后从头开始轮流进行一至二报数、一至三报数直到剩下的人数不超过三人为止。
Input
本题有多个测试数据组,第一行为组数N,接着为N行新兵人数,新兵人数不超过5000。
Output
共有N行,分别对应输入的新兵人数,每行输出剩下的新兵最初的编号,编号之间有一个空格。
Sample Input
2
20
40
Sample Output
1 7 19
1 19 37
思路:
士兵1-2报数时,用循环加公式i % 2 + 1 == 2把报到2的士兵找出来,将他们的编号变大,计算剩下的人,重新从大到小排列,士兵1-3报数也是如此。最后剩下三人就只要输出数组的前三个数就好了。
源代码:
#include<iostream> #include<algorithm> using namespace std; #define maxn 5000 int main() { int t; cin >> t; while (t--) { int count=0; int a[maxn],num; cin >> num; int num1 = num; for (int i = 0; i < num; i++) { a[i]=i+1; } while (num> 3) { for (int i = 0; i < num; i++) { if (i % 2 + 1 == 2) { a[i] =num1+1; //报数为2的士兵,编号变大。 count++; } } sort(a, a + num); //重新排序,让剩下的士兵排到前面。 num= num - num/2; //计算剩下的人 if (num<= 3) { break; } else { for (int i = 0; i < num; i++) { if (i%3+1== 3) { a[i] = num1+1;// 把不要的数变大,以便后面排序时在后面。 } } sort(a, a + num); num = num -num/3; } } for (int i = 0; i < num-1; i++) { cout << a[i] << " "; //输出最后的三人 } cout << a[num - 1] << endl; } return 0; }
心得:
感觉良好。。。加油!
相关文章推荐
- SQL中数据定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)
- Git与GitHub版本控制使用记录
- MYsql的length的函数 strim
- 基于Linux的智能家居的设计(3)
- window7系统重装
- hdoj 1869 六度分离 【判断任意点最短路是否小于等于7】
- c++中写udp编程
- 一个Maven实现的验证码模块
- datatables 配套bootstrap样式使用 ajax篇
- 虚函数与虚继承寻踪
- 有效解决win8/8.1系统安装.net framework 3.5出现0x800F0906代码错误
- 天下武功尽出LAMP之http篇(3)
- 天下武功尽出LAMP之http篇(3)
- 数组的添加、删除、排序、与字符串之间的转换、截取、查找、遍历操作总结!!!
- LintCode - Merge Two Sorted List
- ssh方式访问oschina仓库
- typedef和define详细区别
- 重建二叉树(根据 前序 和 中序二叉树)
- Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
- 记录我的VHDL之路(三)