HPU-ACM暑期培训第2周个人赛:Problem E

Problem E

Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 83   Accepted Submission(s) : 25

Problem Description

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

Input

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

Output

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

Sample Input

2
20
40

Sample Output

1 7 19
1 19 37

AC-code:

#include<stdio.h>

struct bing
{
	int xu;
}a[5005];

int main()
{
	int n,m,t,k,i;
	scanf("%d",&n);
	while(n--)
	{
		scanf("%d",&m);
		for(i=1;i<=m;i++)
			a[i].xu=i;
		k=m;
		while(k>=4)
		{
			k=0;
			for(i=1;i<=m;i++)
			{
				if(i%2)
					a[++k].xu=a[i].xu;
			}
			if(k<4)
				break;
			m=k;
			k=0;
			for(i=1;i<=m;i++)
			{
				if(i%3)
					a[++k].xu=a[i].xu;
			}
			m=k;
		}
		if(k==2)
			printf("1 %d\n",a[2].xu);
		else if(k==3)
			printf("1 %d %d\n",a[2].xu,a[3].xu);
		else
			printf("1\n");
	}
	return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-01 00:08:15

HPU-ACM暑期培训第2周个人赛:Problem E的相关文章

北大ACM暑期培训(1)——线段树,树状数组

本文出自:http://blog.csdn.net/svitter 今天ACM暑期实训开始了,今天讲述的内容是: 7.14  数据结构(一): 线段树,树状数组,二维线段树. 线段树:invertal tree (称为区间树更加合适) 作用:快速区间查询,用于解决区间统计的有关问题. 重点:同层节点不重叠. 每层最多有两个终止节点. 更新和进行区间分解的时间复杂度均为log(n); 方法:调用会多次使用递归更新插入查询: 空间:开空间的时候,一般情况下开4n大小,2*2log[n] - 1 <=

HPU-ACM暑期培训第2周14级个人赛:Problem D【贪心】

Problem D Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submission(s) : 143   Accepted Submission(s) : 61 Problem Description 话说上回讲到海东集团面临内外交困,公司的元老也只剩下XHD夫妇二人了.显然,作为多年拼搏的商人,XHD不会坐以待毙的. 一天,当他正在苦思冥想解困良策的时候,突然想到

暑期培训计划之个人计划

使用算法竞赛入门经典(刘汝佳编) 暑期培训计划之个人计划(7.22到8.13) 日期 周次         看书                                                      编程题目                                 看书完毕情况                        题目完毕情况         备注    2014.7.22 周二 第一章-第六章 (1-113页)  卡片游戏,简单枚举除法  完毕 完毕  2

140801暑期培训.txt

1.N!的求法(大菲波数类似) #include<stdio.h> #include<string.h> int s[110000]; int main() { int n; int i,j,k,l,m; while(scanf("%d",&n)!=EOF) { memset(s,0,sizeof(s)); l=1;      //控制位数 s[0]=1; for(i=1;i<=n;i++) { k=0;    //控制进位 for(j=0;j&l

140729暑期培训.txt

1.对于题目给出的已知数据是一个开始时间和一个结束时间的题 第一反应会是将开始时间进行排序 但这样做比较麻烦 做题应该多换几个角度和思维 将这类题按结束时间进行排序会简单的多 2.结构体 struct move           //struct是结构体函数 { int a;       //结构体成员 double b; char c; }num[100];       //一个结构体数组可以包含多个结构体成员,而且结构体成员的类型可以不同 int main() { for(i=0;i<n;

北大ACM暑期培训课程目录(五)

本文出自:http://blog.csdn.net/svitter netFlow Ford-Fulkerson 深度优先搜索,制作一个流网络. 部分路径可能不合理. 对上次dfs的边就行重新筛选.每条边来个反向边. 再来一次dfs 发现还能找到一条路径. dfs->abtray edge->dfs stop when no new stream 容量相等. *残余网络 寻找变数最少的增广路径 通过bfs寻找增广路劲 Edmonds-Karp最短增广路算法 依然不是很好的算法. POJ1273

140804暑期培训.txt

1.母函数 母函数,顾名思义,就是母亲,那就说明,在这个函数里面还有儿子,即子函数.说白了,就是子函数可以看作是母函数的一个子集. 而如何把这些子函数用一个母函数来表示呢?即所谓的通项公式. 通俗理解为:母函数就是一个多项式前面的系数的一个整体的集合,而子函数就是这个多项式每一项前面的系数. 母函数有普通型的,也有指数型的.而我们通常在做题当中碰到的大多是普通型的,指数型的较少,主要用来求解多重排列的题型 普通型的可以用在求解组合以及整数拆分的题型中. 例如,对于有n种物品,如果第i个物品有ki

140819暑期培训.txt

1.对于判断是否可以组成三角形 两边之和大于第三边&&两边之差小于第三边     (需要同时满足) 2. 1>r*r<x; 2>r<sqrt(x*1.0); 这两种形式,第二种要比第一种用的时间少.140819暑期培训.txt,布布扣,bubuko.com

忙于线下紧急培训,一周之内不更新课程,亲们见谅。一周之后“大补”

忙于线下培训,一周之内不更新课程,亲们见谅.一周之后"大补" 亲们还可以加我的QQ号码9278062或者我的群 106111081 10611108108 忙于线下紧急培训,一周之内不更新课程,亲们见谅.一周之后"大补",布布扣,bubuko.com