2019年第十届蓝桥杯省赛Java A组真题解析(带源码)

第一题:平方和(填空题)
题目描述
小明对数位中含有 2、0、1、9 的数字很感兴趣,在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574,平方和是 14362。注意,平方和是指将每个数分别平方后求和。
请问,在 1 到 2019 中,所有这样的数的平方和是多少?

分析:无

package A组2019年;



public class _1平方和 {
	public static void main(String[] args) {
		long ans = 0;
		for(int i=1;i<=2019;i++) {
			if(check(i)) {
				ans += Math.pow(i, 2);
			}
		}
		System.out.println(ans);
	}
	
	static boolean check(int i) {
		String s = String.valueOf(i);
			for(int j=0;j<s.length();j++) {
				if(s.charAt(j) == '2' || s.charAt(j) == '0' ||s.charAt(j) == '1' ||s.charAt(j) == '9') {
					return true;
				}
			}
			return false;
	}

}

第二题:数列求值(填空题)

题目描述
给定数列 1, 1, 1, 3, 5, 9, 17, …,从第 4 项开始,每项都是前3 项的和 。求
第 20190324 项的最后 4 位数字。

分析:暴力枚举,每项都是前3项的和,和对10000取余,因为只要最后四位数字。

package A组2019年;



public class _2数列求值 {
	public static void main(String[] args) {
		long[] ans = {1,1,1};
		for(int i=4;i<=20190324;i++) {
			long now = ans[0] + ans[1] + ans[2];
			ans[0] = ans[1];
			ans[1] = ans[2];
			ans[2] = now%10000;
		}
		
		
		System.out.println(ans[2]);
	}
}

第三题:最大降雨量(填空题)
题目描述
由于沙之国长年干旱,法师小明准备施展自己的一个神秘法术来求雨。
这个法术需要用到他手中的 49 张法术符,上面分别写着 1 至 49 这 49 个
数字。法术一共持续 7 周,每天小明都要使用一张法术符,法术符不能重复使用。
每周,小明施展法术产生的能量为这周 7 张法术符上数字的中位数。法术
施展完 7 周后,求雨将获得成功,降雨量为 7 周能量的中位数。
由于干旱太久,小明希望这次求雨的降雨量尽可能大,请大最大值是多少?

分析:一个小学脑筋急转弯,详细见代码

package A组2019年;

public class _最大降雨量 {
	public static void main(String[] args) {
		 /*
         * [][][][a][][][]
         * [][][][b][][][]
         * [][][][c][][][]
         * [][][][max][][][]
         * [][][][d][][][]
         * [][][][e][][][]
         * [][][][f][][][]
         *
         * 此题意思为将49分为7组数字,求取七组数字中每组数字的中位数所构成的数列的中位数的最大值
         * 即如图所示,最大化[max]
         * 49个数字中需要比[max]大的有【max】行的后三位,d、e、f行的后四位
         * 即结果如下
         * */
        System.out.println(49 - (3 * 4) - 3);
	}
}

第四题:迷宫(填空题)
题目描述
下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可以通行的地方。

010000
000100
001001
110000

迷宫的入口为左上角,出口为右下角,在迷宫中,只能从一个位置走到这 个它的上、下、左、右四个方向之一。
对于上面的迷宫,从入口开始,可以按DRRURRDDDR 的顺序通过迷宫, 一共 10 步。其中 D、U、L、R 分别表示向下、向上、向左、向右走。
对于下面这个更复杂的迷宫(30 行 50 列),请找出一种通过迷宫的方式,其使用的步数最少,在步数最少的前提下,请找出字典序最小的一个作为答案。请注意在字典序中D<L<R<U。(如果你把以下文字复制到文本文件中,请务 必检查复制的内容是否与文档中的一致。在试题目录下有一个文件 maze.txt, 内容与下面的文本相同)

01010101001011001001010110010110100100001000101010
00001000100000101010010000100000001001100110100101
01111011010

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
由于蓝桥杯的试不允许公开,因此我们无法提供完整的试及答案解析。以下是部分目及答案解析供参考: 1. 两个数的和 目描述: 输入两个整数,求它们的和。 输入格式: 共一行,包含两个整数。 输出格式: 共一行,包含一个整数,表示两个整数的和。 Java代码: import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int a = in.nextInt(); int b = in.nextInt(); System.out.println(a + b); } } 2. 等差数列 目描述: 输入一个整数n和一个整数d,输出1到n的等差数列,公差为d。 输入格式: 共一行,包含两个整数n和d。 输出格式: 共n行,每行一个整数,表示等差数列中的一个数。 Java代码: import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int d = in.nextInt(); int x = 1; for (int i = 0; i < n; i++) { System.out.println(x); x += d; } } } 3. 最长上升子序列 目描述: 给定一个长度为n的整数序列,求它的最长上升子序列的长度。 输入格式: 共一行,包含n个整数,表示整数序列。 输出格式: 共一行,包含一个整数,表示最长上升子序列的长度。 Java代码: import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int[] a = new int[n]; int[] f = new int[n]; for (int i = 0; i < n; i++) { a[i] = in.nextInt(); f[i] = 1; } int ans = 1; for (int i = 1; i < n; i++) { for (int j = 0; j < i; j++) { if (a[j] < a[i]) { f[i] = Math.max(f[i], f[j] + 1); } } ans = Math.max(ans, f[i]); } System.out.println(ans); } } 以上是部分目及答案解析,仅供参考。建议考生在备战蓝桥杯时,认复习基础知识,多做、多思考,提高解能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

源治·

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值