第一题:平方和(填空题)
题目描述
小明对数位中含有 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