前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2014年第五届java A组蓝桥杯省赛真题

2014年第五届java A组蓝桥杯省赛真题

作者头像
Max超
发布2020-12-31 11:43:31
4500
发布2020-12-31 11:43:31
举报

这里是蓝桥杯历年的题目专栏,将会陆续更新将往年真题以及解答发布出来,欢迎各位小伙伴关注我吖,你们的点赞关注就是给我最好的动力!!! 每天更新一届真题,敬请期待

蓝桥杯历年真题及详细解答

目录

      • 第一题:猜年龄
      • 第二题:李白打酒
      • 第三题:神奇算式
      • 第四题:写日志
      • 第五题:锦标赛
      • 第六题:六角填数
      • 第七题:绳圈
      • 第八题:兰顿蚂蚁
      • 第九题:斐波那契
      • 第十题:波动数列

第一题:猜年龄

题目描述 小明带两个妹妹参加元宵灯会。别人问她们多大了,她们调皮地说:“我们俩的年龄之积是年龄之和的6倍”。小明又补充说:“她们可不是双胞胎,年龄差肯定也不超过8岁啊。” 请你写出:小明的较小的妹妹的年龄。 题目分析 题目代码

代码语言:javascript
复制

第二题:李白打酒

题目描述 话说大诗人李白,一生好饮。幸好他从不开车。 一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱: 无事街上走,提壶去打酒。 逢店加一倍,遇花喝一斗。 这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。 请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。 注意:通过浏览器提交答案。答案是个整数。不要书写任何多余的内容。 题目分析 题目代码

代码语言:javascript
复制

第三题:神奇算式

题目描述 由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字组成。 比如: 210 x 6 = 1260 8 x 473 = 3784 27 x 81 = 2187 都符合要求。 如果满足乘法交换律的算式算作同一种情况,那么,包含上边已列出的3种情况,一共有多少种满足要求的算式。 请填写该数字,通过浏览器提交答案,不要填写多余内容(例如:列出所有算式)。 题目分析 题目代码

代码语言:javascript
复制

第四题:写日志

题目描述 写日志是程序的常见任务。现在要求在 t1.log, t2.log, t3.log 三个文件间轮流写入日志。也就是说第一次写入t1.log,第二次写入t2.log,… 第四次仍然写入t1.log,如此反复。 下面的代码模拟了这种轮流写入不同日志文件的逻辑。 请填写划线部分缺失的代码。通过浏览器提交答案。 注意:不要填写题面已有的内容,也不要填写任何说明、解释文字。

代码语言:javascript
复制
public class A
{
	private static int n = 1;
	
	public static void write(String msg)
	{
		String filename = "t" + n + ".log";
		n = ____________;
		System.out.println("write to file: " + filename + " " + msg);
	}
}

题目分析 题目代码

代码语言:javascript
复制

第五题:锦标赛

题目描述 如果要在n个数据中挑选出第一大和第二大的数据(要求输出数据所在位置和值),使用什么方法比较的次数最少?我们可以从体育锦标赛中受到启发。如图【1.png】所示,8个选手的锦标赛,先两两捉对比拼,淘汰一半。优胜者再两两比拼…直到决出第一名。第一名输出后,只要对黄色标示的位置重新比赛即可。下面的代码实现了这个算法(假设数据中没有相同值)。 代码中需要用一个数组来表示图中的树(注意,这是个满二叉树, 不足需要补齐)。它不是存储数据本身,而是存储了数据的下标。 第一个数据输出后,它所在的位置被标识为-1

代码语言:javascript
复制
class A{
   	//a 表示待处理的数据,长度如果不是2的次幂,则不足位置补为-1
	static void pick(int[] a)
	{
		int n = 1;
		while(n<a.length) n *= 2;
		
		
		int[] b = new int[2*n-1];
		for(int i=0; i<n; i++){ 
			if(i<a.length) 
				b[n-1+i] = i;
			else
				b[n-1+i] = -1;
		}
		
		//从最后一个向前处理
		for(int i=b.length-1; i>0; i-=2){
			if(b[i]<0){
				if(b[i-1]>=0)
					b[(i-1)/2] = b[i-1]; 
				else
					b[(i-1)/2] = -1;
			}
			else{
				if(a[b[i]]>a[b[i-1]])
					b[(i-1)/2] = b[i];
				else
					b[(i-1)/2] = b[i-1];
			}
		}
		
		//输出树根
		System.out.println(b[0] + ": " + a[b[0]]);
		
		//值等于根元素的位置需要重新pk
		pk(a,b,0,b[0]);
		
		//再次输出树根
		System.out.println(b[0] + ": " + a[b[0]]);
	}
 
	// a 表示待处理数据,b 二叉树,k 当前要重新比拼的位置,v 已经决胜出的值	
   	static void pk(int[] a, int[] b, int k, int v)
	{
		
		int k1 = k*2+1;
		int k2 = k1 + 1;
		
		if(k1>=b.length || k2>=b.length){
			b[k] = -1;
			return;
		}
		
		if(b[k1]==v) 
			pk(a,b,k1,v);
		else
			pk(a,b,k2,v);
		
		
		//重新比较
		if(b[k1]<0){
			if(b[k2]>=0)
				b[k] = b[k2]; 
			else
				b[k] = -1;
			return;
		}
		
		if(b[k2]<0){
			if(b[k1]>=0)
				b[k] = b[k1]; 
			else
				b[k] = -1;
			return;
		}
		
		if(__________________________)  //填空
			b[k] = b[k1];
		else
			b[k] = b[k2];
	}
}

请仔细分析流程,填写缺失的代码。 通过浏览器提交答案,只填写缺失的代码,不要填写已有代码或其它说明语句等。

在这里插入图片描述
在这里插入图片描述

题目分析 题目代码

代码语言:javascript
复制

第六题:六角填数

题目描述 如图【1.png】所示六角形中,填入1~12的数字。 使得每条直线上的数字之和都相同。 图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少? 请通过浏览器提交答案,不要填写多余的内容。

在这里插入图片描述
在这里插入图片描述

题目分析 题目代码

代码语言:javascript
复制

第七题:绳圈

题目描述 今有 100 根绳子,当然会有 200 个绳头。 如果任意取绳头两两配对,把所有绳头都打结连接起来。最后会形成若干个绳圈(不考虑是否套在一起)。 我们的问题是:请计算最后将形成多少个绳圈的概率最大? 注意:结果是一个整数,请通过浏览器提交该数字。不要填写多余的内容。 题目分析 题目代码

代码语言:javascript
复制

第八题:兰顿蚂蚁

题目描述 兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属于细胞自动机的一种。 平面上的正方形格子被填上黑色或白色。在其中一格正方形内有一只“蚂蚁”。蚂蚁的头部朝向为:上下左右其中一方。 蚂蚁的移动规则十分简单:若蚂蚁在黑格,右转90度,将该格改为白格,并向前移一格;若蚂蚁在白格,左转90度,将该格改为黑格,并向前移一格。 规则虽然简单,蚂蚁的行为却十分复杂。刚刚开始时留下的路线都会有接近对称,像是会重复,但不论起始状态如何,蚂蚁经过漫长的混乱活动后,会开辟出一条规则的“高速公路”。 蚂蚁的路线是很难事先预测的。 你的任务是根据初始状态,用计算机模拟兰顿蚂蚁在第n步行走后所处的位置。 【数据格式】

输入数据的第一行是 m n 两个整数(3 < m, n < 100),表示正方形格子的行数和列数。 接下来是 m 行数据。 每行数据为 n 个被空格分开的数字。0 表示白格,1 表示黑格。

接下来是一行数据:x y s k, 其中x y为整数,表示蚂蚁所在行号和列号(行号从上到下增长,列号从左到右增长,都是从0开始编号)。s 是一个大写字母,表示蚂蚁头的朝向,我们约定:上下左右分别用:UDLR表示。k 表示蚂蚁走的步数。

输出数据为两个空格分开的整数 p q, 分别表示蚂蚁在k步后,所处格子的行号和列号。

例如, 输入: 5 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 3 L 5 程序应该输出: 1 3

再例如, 输入: 3 3 0 0 0 1 1 1 1 1 1 1 1 U 6 程序应该输出: 0 0

资源约定: 峰值内存消耗(含虚拟机) < 256M CPU消耗 < 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。 注意:主类的名字必须是:Main,否则按无效代码处理。

在这里插入图片描述
在这里插入图片描述

题目分析 题目代码

代码语言:javascript
复制

第九题:斐波那契

题目描述 斐波那契数列大家都非常熟悉。它的定义是: f(x) = 1 … (x=1,2) f(x) = f(x-1) + f(x-2) … (x>2) 对于给定的整数 n 和 m,我们希望求出: f(1) + f(2) + … + f(n) 的值。但这个值可能非常大,所以我们把它对 f(m) 取模。 公式参见【图1.png】 但这个数字依然很大,所以需要再对 p 求模。 【数据格式】 输入为一行用空格分开的整数 n m p (0 < n, m, p < 10^18) 输出为1个整数

例如,如果输入: 2 3 5 程序应该输出: 0

再例如,输入: 15 11 29 程序应该输出: 25

资源约定: 峰值内存消耗(含虚拟机) < 256M CPU消耗 < 2000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。 注意:主类的名字必须是:Main,否则按无效代码处理。

在这里插入图片描述
在这里插入图片描述

题目分析 题目代码

代码语言:javascript
复制

第十题:波动数列

题目描述 观察这个数列: 1 3 0 2 -1 1 -2 … 这个数列中后一项总是比前一项增加2或者减少3。 栋栋对这种数列很好奇,他想知道长度为 n 和为 s 而且后一项总是比前一项增加a或者减少b的整数数列可能有多少种呢? 【数据格式】 输入的第一行包含四个整数 n s a b,含义如前面说述。 输出一行,包含一个整数,表示满足条件的方案数。由于这个数很大,请输出方案数除以100000007的余数。

例如,输入: 4 10 2 3 程序应该输出: 2

【样例说明】 这两个数列分别是2 4 1 3和7 4 1 -2。

【数据规模与约定】 对于10%的数据,1<=n<=5,0<=s<=5,1<=a,b<=5; 对于30%的数据,1<=n<=30,0<=s<=30,1<=a,b<=30; 对于50%的数据,1<=n<=50,0<=s<=50,1<=a,b<=50; 对于70%的数据,1<=n<=100,0<=s<=500,1<=a, b<=50; 对于100%的数据,1<=n<=1000,-1,000,000,000<=s<=1,000,000,000,1<=a, b<=1,000,000。

资源约定: 峰值内存消耗(含虚拟机) < 256M CPU消耗 < 2000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。 注意:主类的名字必须是:Main,否则按无效代码处理。 题目分析 题目代码

代码语言:javascript
复制

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-12-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 第一题:猜年龄
  • 第二题:李白打酒
  • 第三题:神奇算式
  • 第四题:写日志
  • 第五题:锦标赛
  • 第六题:六角填数
  • 第七题:绳圈
  • 第八题:兰顿蚂蚁
  • 第九题:斐波那契
  • 第十题:波动数列
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档