@郑州轻工业大学蓝桥杯校内选拔赛 题解

笔者自述

前些天参加学校的蓝桥杯校内选拔赛,做完之后感觉题大部分不是很难,就把考场上的代码保存下来,给大家做个简单的注释,和解析。因为后来参加会议,比较忙,所以就到现在才完成。

这里都是我自己的个人看法并非最正解和最好的答案。只是给不会的同学提供一个代码思路。大家有问题的也可以相互讨论,提出见解。

第一次发博,感谢大家支持点,评论。

QQ:1342249698

1.质数问题(填空题)

一个数被称为质数(或素数)是指除开1和它本身两个约数外,没有其他的约数。
不超过10000的数中,最大的质数是多少?

public class test1{public static void main(String[] args) {for(int i=1;i<10000;i++){                   //从1开始到10000开始寻找质数for(int j=2;j<i;j++){                   //除了1和本身之外能整除int a=i%j;                            //a为每次除后的余数,为0即能被整除,即不为质数if(a==0)break;if(j+1==i){                           //当除数达到 被除数-1 也不能被整数的话,即为质数System.out.println(i);}}}}
}

2.进制转换(填空题)

请问十六进制数1949对应的十进制数是多少?请特别注意给定的是十六进制,求的是十进制。

1乘于16的三次方
9乘于16的二次方
4乘于16的一次方
9乘于16的零次方结果相加即可
这道题相对简单一些,直接转换为十进制,连其他进制都不用转换了。送分题

3.组合问题(填空题)

在2019个有区别的球中选3个球放在一个盘子里,请问有多少种选法?

C(2019, 3)  //组合问题,明白人一眼即懂

4.数字问题(填空题)

在1至2019中,有多少个数的数位中包含数字9?
注意,有的数中的数位中包含多个9,这个数只算一次。例如,1999这个
数包含数字9,在计算只是算一个数。

public class test4 {         public static void main(String[] args) {int num =0;                                //设总共有num个整数for(int i=1;i<2020;i++){              //从1开始到2019int a=i/1000;                       //检侧这个数的千位数字int b=i%10;                            //检测这个数的个位数字int c=(i%100-b)/10;                    //检测这个数的十位数字int d=(i%1000-b-c*10)/100;         //检测这个数的百位数字if(a==9||b==9||c==9||d==9){System.out.println(i);num=num+1;}}System.out.println(num);}
}
巧用int型间除法的留整
善用余数确认数字的位数数字

5.元音问题(代码题)

输入一个单词,请输出这个单词中第一个出现的元音字母。
元音字母包括 a, e, i, o, u,共五个。

输入格式
输入一行,包含一个单词,单词中只包含小写英文字母。
输出格式
输出一行包含一个字母,为单词中第一个出现的元素字母。若单词中不存在元
音字母,输出字母 n。
样例输入
hello
样例输出
e
样例输入
fly
样例输出
n
评测用例规模与约定
对于所有评测用例,单词中的字母个数不超过 100。

import java.util.Scanner;public class test5 {public static void main(String[] args) {Scanner Input = new Scanner(System.in);String input = Input.next();char in[] = input.toCharArray();                  //将字符型转换成字符数组储存for(int i=0;i<in.length;i++){                      //从头到尾检测数组的每一个元素if(in[i]=='a'||in[i]=='e'||in[i]=='i'||in[i]=='o'||in[i]=='u'){System.out.println(in[i]);                   break;}if(i+1==in.length)                                System.out.println('n');}}
}

6.单词加密(代码题)

给定一个单词,请使用凯撒密码将这个单词加密。
凯撒密码是一种替换加密的技术,单词中的所有字母都在字母表上向后偏移 3
位后被替换成密文。即 a变为d,b变为e,…,w变为z,x变为 a,y变为b,z
变为c。
例如,lanqiao会变成 odqtldr。

输入格式
输入一行,包含一个单词,单词中只包含小写英文字母。
输出格式
输出一行,表示加密后的密文。
样例输入
lanqiao
样例输出
odqtldr
评测用例规模与约定
对于所有评测用例,单词中的字母个数不超过 100。

import java.util.Scanner;public class test6 {public static void main(String[] args) {Scanner Input = new Scanner(System.in);String input = Input.next();char in[] = input.toCharArray();                      //将字符型转换成字符数组储存for(int i=0;i<in.length;i++){Character a =Character.valueOf(in[i]);           //因为Character类能够提供更多合适的方法,所以这里将char型转换为Character型int code = a.hashCode();                       //调用该类方法,获取ASICll码值  if(code>96&&code<120) System.out.print(Character.toChars(code+3));       //把对应的ASCll码值增加后转换成字符else System.out.print(Character.toChars(code-23));             }}
}

7.元素最大距离问题(代码题)

在数列 a_1, a_2, …, a_n中,定义两个元素 a_i 和 a_j 的距离为 |i-j|+|a_i-a_j|,
即元素下标的距离加上元素值的差的绝对值,其中 |x| 表示 x 的绝对值。
给定一个数列,请问找出元素之间最大的元素距离。

输入格式
输入的第一行包含一个整数 n。
第二行包含 n 个整数 a_1, a_2, …, a_n,相邻的整数间用空格分隔,表示给定
的数列。
输出格式
输出一行包含一个整数,表示答案。
样例输入
5 9 4 2 4 7
样例输出
9
样例说明
a_1 和 a_3 的距离为 |1-3|+|9-2|=9。
评测用例规模与约定
对于 50% 的评测用例,2 <= n <= 100,0 <= 数列中的数 <= 1000。
对于所有评测用例,2 <= n <= 1000,0 <= 数列中的数 <= 10000。

import java.util.Scanner;public class test7 {public static void main(String[] args) {Scanner Input = new Scanner(System.in);int n = Input.nextInt();int abc[] = new int[n];int distance,max = 0;for(int i=0;i<n;i++){                  abc[i]=Input.nextInt();}                                       for(int i=0;i<abc.length;i++){                            //从第一个整数开始,for(int j=i+1;j<abc.length;j++){                   //算和后面整数的距离if(abc[i]>abc[j]) distance=j-i+abc[i]-abc[j];       else distance=j-i+abc[j]-abc[i];if(distance>max) max=distance;                    //把距离比最大距离还大的存入最大距离}}System.out.println(max);}
}

8.和谐向量问题(代码题)

一个平面向量表示从一个坐标点到另一个坐标点的变化量,一般用两个数 (x, y)
来表示。
两个向量相加是指分别将对应的两个数相加,例如 (x_1, y_1) 与 (x_2, y_2) 相
加后得 (x_1+x_2, y_1+y_2)。
如果两个向量相加后,得到的向量两个值相等,我们称这两个向量为和谐向量
对。例如 (3, 5) 和 (4, 2) 是和谐向量对。
给定 n 个向量,问能找到多少个和谐向量对?

输入格式
输入的第一行包含一个整数 n,表示向量的个数。
接下来 n 行,每行两个整数 x_i, y_i,表示一个向量。
输出格式
输出一行,包含一个整数,表示有多少个和谐向量对。
请注意,自己和自己不能成为一个和谐向量对。
样例输入
5
9 10
1 3
5 5
5 4
8 6
样例输出
2
样例输入
4
1 1
2 2
1 1
2 2
样例输出
6
样例说明
每两个向量组成一个和谐向量对。
评测用例规模与约定
对于 70% 的评测用例,1 <= n <= 1000;
对于所有评测用例,1 <= n <= 100000, -1000000 <= x_i, y_i <= 1000000。

import java.util.Scanner;public class test8 {public static void main(String[] args) {Scanner Input = new Scanner(System.in);int n = Input.nextInt();int abc[][] = new int[n][2];int sum =0;for(int i=0;i<n;i++){                               //完成输入abc[i][0]= Input.nextInt();abc[i][1]= Input.nextInt();}                             for(int i=0;i<abc.length;i++){                            //从第一个元素开始for(int j=i+1;j<abc.length;j++){                   //计算和每一个元素是否是和谐向量if(abc[i][0]+abc[j][0]==abc[i][1]+abc[j][1]) sum=sum+1;}}System.out.println(sum);}}

9.V字星空问题(代码题)

当夜深人静时,小明喜欢独自凝望着天空。
这一天,小明看着满天的繁星,突发奇思妙想,他发现可以通过用直线连接天
空中的星星来组成美丽的图案。
小明想到一个非常简单的图案:大写的 V,如果连接三颗星星,中间一颗最靠
下方,这样的形状就是一个大 V了。
小明越想越着迷,他想知道,天空中最亮的 n 颗星星,可以有多少种方式组
成大V。
为了更严谨的看待问题,小明把自己所见范围的天空映射到了一个平面直角坐
标系中,他看到的最亮的 n 颗星星在这个坐标系中都有自己的坐标。
如果三颗星星的坐标分别为 (x_i, y_i), (x_j, y_j), (x_k, y_k),当 x_i < x_j < x_k
且 y_j < y_i 且 y_j < y_k 时,这三颗星星就组成了一个大 V。

输入格式
输入的第一行包含一个整数 n 。
接下来 n 行,每行两个整数,每一行表示一颗星星的 x 坐标和 y 坐标。
输出格式
输出一行包含一个整数,表示有多少种方式组成大 V。
样例输入
5
4 5
2 3
1 4
3 3
5 8
样例输出
4
评测用例规模与约定
对于 30% 的评测用例,2 <= n <= 50,星星的坐标为不超过 1000 的非负
整数。
对于 50% 的评测用例,2 <= n <= 100,星星的坐标为不超过 1000 的非负
整数。
对于 80% 的评测用例,2 <= n <= 1000,星星的坐标为不超过 10000 的
非负整数。
对于所有评测用例,2 <= n <= 5000,星星的坐标为不超过 100000 的非负
整数。

import java.util.Scanner;public class test9 {public static void main(String[] args) {Scanner Input = new Scanner(System.in);int n = Input.nextInt();int abc[][] = new int[n][2];int sum =0;for(int i=0;i<n;i++){abc[i][0]= Input.nextInt();abc[i][1]= Input.nextInt();}                                                          //完成输入for(int i=0;i<abc.length;i++){                              //选取第一个点for(int j=i+1;j<abc.length;j++){                         //之后选取第二个点for(int k=j+1;k<abc.length;k++){                           //之后选取第三个点//看三个点是否满足当题中( x_i < x_j < x_k 且 y_j < y_i 且 y_j < y_k)//三个点的排列一共有6种情况,直接进行判断,是否符合这6种情况的其中一种if((abc[i][0]<abc[j][0]&&abc[j][0]<abc[k][0])&&(abc[j][1]<abc[i][1])&&(abc[j][1]<abc[k][1]))sum=sum+1;else if((abc[k][0]<abc[j][0]&&abc[j][0]<abc[i][0])&&(abc[j][1]<abc[i][1])&&(abc[j][1]<abc[k][1]))sum=sum+1;else if((abc[k][0]<abc[i][0]&&abc[i][0]<abc[j][0])&&(abc[i][1]<abc[k][1])&&(abc[i][1]<abc[j][1]))sum=sum+1;else if((abc[j][0]<abc[i][0]&&abc[i][0]<abc[k][0])&&(abc[i][1]<abc[k][1])&&(abc[i][1]<abc[j][1]))sum=sum+1;else if((abc[i][0]<abc[k][0]&&abc[k][0]<abc[j][0])&&(abc[k][1]<abc[i][1])&&(abc[k][1]<abc[j][1]))sum=sum+1;else if((abc[j][0]<abc[k][0]&&abc[k][0]<abc[i][0])&&(abc[k][1]<abc[i][1])&&(abc[k][1]<abc[j][1]))sum=sum+1;}}}System.out.println(sum);}
}
 这道题这样做更多算是套做,因为只有三个点,三个点能组成的排列阵容只有6个,相对来说少,只要其中一个
排列阵容能够符合题中要求( x_i < x_j < x_k 且 y_j < y_i 且 y_j < y_k),就算成立V形星星。当然这种算法是在这种情况少的情况下才能够使用。就像计算1+2+3+...+5,一个一个算能算的过来;而当计算
1+2+3+4+...+100,就要必须借助求和公式了。因为是在考试,时间紧迫,就用了套做,把3个点排列的6种情况列举出来,一个一个情况对照。并非最优最正解。

10.最长水渠问题(代码题)

受大西线调水工程启发,小明也准备设计一条调水的水渠。 小明经费有限,他只能在一块有限区域内建立一条简单的水渠。 小明首先勘探了地形,在这块地中有一处水源,必须用作水渠的起点。另外,小明还测量了一些点,包括点的位置和高度。如果两个小明测量的点之间的距离不超过 d 且高度不同,小明就可以在这两点之间建立一段水渠,让水从高处流向低处,这一段的长度为两点之间的直线距离(即将横坐标的差的平方加上纵坐标的差的平方加上高度差的平方后再开平方根)。 小明计划只修一条主水渠,不建立分支的水渠。由于水渠能影响的范围与水渠的长度正相关,小明希望水渠尽可能长。
请注意,水渠必须从水源开始修,并且高度应当递减。水渠的不同段可能交叉
(建个桥即可)。

输入格式
输入的第一行包含一个整数 n ,表示小明已经测量的点数。 接下来 n 行,每行三个整数 x, y, h,分别表示测量的点坐标为 (x, y),高度为 h。这部分的第一个点即为水源,第一个点的 h值大于其他点的 h值。 接下来一行包含一个整数 d。
输出格式
输出一行,包含一个实数,四舍五入保留 2 位小数,表示水渠最长能修多长。
样例输入
5
1 1 10
2 3 8
4 5 9
1 2 5
4 5 5
8
样例输出
10.66
样例说明
在这些点中有两个坐标为 (4, 5) 的点,这是允许的。
评测用例规模与约定
对于 30% 的评测用例,1 <= n <= 10;
对于 60% 的评测用例,1 <= n <= 20;
对于所有评测用例,1 <= n <= 1000,0 <= h <= 10000,0 <= x, y <= i
10000,0 < d < 1e7(10 的7次方)。

import java.util.Scanner;public class test10{public static void main(String[] args) {Scanner Input = new Scanner(System.in);int n = Input.nextInt();                           //录入数量ndouble abc[][] = new double[n][3];int d=0;double sum=0;for(int i=0;i<n;i++){                                //录入各点abc[i][0]= Input.nextInt();      abc[i][1]= Input.nextInt();abc[i][2]= Input.nextInt();}d=Input.nextInt();                                    //录入最大距离d/*算法是这样的:首先最大距离,可以肯定的是水渠一定是从最高的流入次高的点,再流入次次高的点就比如 三个点 高度为 10  8  5  水渠最大长度一定是从10→8→5这样流的 不是10直接到5  当然 第二最高可能有两个点  都在h2的高度 但是xy坐标不同 那么 第一最高点到第二最高点就不一定只有一个路径 因为第二最高点有两个点 (就像 1 1 10 → 4 5 9  和 1 1 10→ 1 2 9)   所以把第一最高点到第二最高点的几条路径里挑取一个最大距离的 流到那个点上随后再从流到的第二最高点 算到第三最高点的几条路径里挑取一个最大距离 再流到下一个点上...依次类推一直流到最低点 把流经的点连起来 就是最长水渠了把几个相邻高度的两点的最大距离留存 最后相加就是了*/double x=abc[0][0],y=abc[0][1],h=abc[0][2];          //记录水目前在的位置for(;;)                              {/*1.先找出下一最高点的高度*/double nextmaxheigh = -1;                        //定义下一最大高度for(int j=0;j<abc.length;j++){                  //找出下一最大高度if(abc[j][2]>nextmaxheigh&&abc[j][2]<h){nextmaxheigh=abc[j][2];}}if(nextmaxheigh==-1)break;//当下一最大高度是负数,即为初始定义值时,水已经流到最低了,循环结束/*2.再找出当前水的位置流到下一最高位置的最大距离*/double x1=0,y1=0,h1=0;                 //定义水要流到的下一位置的坐标double maxlong = 0;                        //定义水流到的下一最高点的最远距离for(int j=1;j<abc.length;j++){if(nextmaxheigh==abc[j][2]){            //筛选出下一最高点double s=Math.sqrt((x-abc[j][0])*(x-abc[j][0])+(y-abc[j][1])*(y-abc[j][1]));if(s>maxlong&&s<d){               //筛选流向下一最高点的最大距离 并记录该点坐标maxlong=s;                 x1=abc[j][0];y1=abc[j][1];h1=abc[j][2];}}}x=x1;y=y1;h=h1;         //把水流到的新位置赋值给 水的当前位置sum=sum+maxlong;      //把相邻高度两点的最大距离叠加  算出最后最大长度的水渠}System.out.println(String.format("%.2f", sum));}
}
这道题有个盲区需要注意,算两点距离的时候,不能把高度算上。只算平面距离。
这可能和题目描述不相符,但否则无法的出样例输出。最后,这道题这样做并非正解,但能够理性得出答案。如果大家有更好的正解,也可以联系我呀。
欢迎来访

郑州轻工业大学2019学年第十一届蓝桥杯校内选拔赛Java B组 题解相关推荐

  1. 2020年第十一届蓝桥杯 - 国赛 - Java研究生组 - F.循环小数

    2020年第十一届蓝桥杯 - 国赛 - Java研究生组 - F.循环小数 在线评测 Ideas 对于一个纯循环小数,假设循环节为l,则小数为0.llll-,转换为分数就是 l / (10 ** n ...

  2. 2020第十一届蓝桥杯国赛JAVA B组真题解析(带源码及解析)

    蓝桥杯历年真题及解析. 目录 蓝桥杯历年真题及解析. A: 美丽的 2 题目: 分析: AC代码: B: 扩散 题目: 分析: AC代码: C: 阶乘约数 题目: 分析: AC代码: D: 本质上升序 ...

  3. ZUST蓝桥杯校内选拔赛(java,c)安吉校区

    序(暂存) 蓝桥杯分为校内模拟赛(10题)->省赛(6题)->国赛(6题)三场 按照难度分为A组(重点),B组(本科)和C组(专科) 按照类型分为软件组(C,Java,Python)和电子 ...

  4. 2020年第十一届蓝桥杯 - 省赛 - Java研究生组+Java大学B组+Python大学组 - E.排序

    Ideas 冒泡排序在最坏情况下(完全逆序)的交换次数为cnt=n(n−1)2cnt=\frac{n(n-1)}{2}cnt=2n(n−1)​,当n=14时,cnt=91,当n=15时,cnt=105 ...

  5. 2020年第十一届蓝桥杯省赛Java b组题目 答案解析

    试题 A: 门牌制作 本题总分:5 分 [问题描述] 小蓝要为一条街的住户制作门牌号. 这条街一共有 2020 位住户,门牌号从 1 到 2020 编号. 小蓝制作门牌的方法是先制作 0 到 9 这几 ...

  6. 2020第十一届蓝桥杯软件类Java B组 决赛(国赛)题目+个人答案

    总体来说,4个小时写10道题,实在有点搞不赢. 以前都是6道,为啥今年突然就10道了啊,时间也不多给点,难搞. 希望时间多给点. 目录 试题 A: 美丽的 2 试题 B: 扩散 试题 C: 阶乘约数 ...

  7. python青少年编程比赛_第十一届蓝桥杯大赛青少年创意编程组比赛细则

    蓝桥杯大赛组委会官网在2019/10/12号发布了关于举办第十一届蓝桥杯大赛青少年创意编程组比赛的通知,详情如下: 蓝桥杯全国软件和信息技术专业人才大赛组委会 蓝桥杯组委会字[2019]57号 关于举 ...

  8. 糖果(2019第十届蓝桥杯省赛C++A组I题) 解题报告(状压dp) Apare_xzc

    糖果(2019第十届蓝桥杯省赛C++A组I题) 解题报告(状压dp) xzc 2019/4/5 试题 I: 糖果 时间限制: 1.0s 内存限制: 256.0MB 本题总分:25分 [问题描述]    ...

  9. 第十二届蓝桥杯省赛JAVA B组杨辉三角形个人题解

    第十二届蓝桥杯省赛JAVA B组杨辉三角形个人题解(非满分) import java.util.Scanner; public class Main {public static void main( ...

最新文章

  1. Android之如何以最简单方式开启闪光灯
  2. BZOJ3262/Luogu3810 陌上花开 (三维偏序,CDQ)
  3. PHP的display_errors与error_reporting
  4. muduo网络库学习(二)对套接字和监听事件的封装Channel
  5. 【二分】抄书 (jzoj 2123)
  6. 【WiFi密码破解详细图文教程】ZOL仅此一份 详细介绍从CDlinux U盘启动到设置扫描破解
  7. mybatis中的#{}和${}区别,和使用场景
  8. Helm 3 完整教程(二十):在 Helm 模板中定义和使用变量
  9. sort函数的使用(c++) bool函数使用
  10. 关于使用JAVA正则表达式报java.lang.StackOverflowError错误问题
  11. java语言包安装_Eclipse 多国语言包的安装以及插件的安装方法
  12. 变上限积分求导的原理
  13. 计算机技术与软件专业技术和计算机二级,软考是什么,跟计算机二级的差别是什么? - 收获啦...
  14. 基于LPRNet的车牌识别算法移植与测试
  15. unity射线检测高速飞行的子弹是否打到敌人
  16. buuoj Pwn writeup 246-250
  17. 计算机行业前景6,目前10大最有发展前景的行业,人工智能第六,有你喜欢的行业吗?...
  18. windows和linux下简单的软件级调整相机曝光时间(或其他参数)的方式
  19. 123012016068-吴雨晴-android博客
  20. 前端web用腾讯地图api根据地址获取经纬度

热门文章

  1. 3D图形核心基础精炼版-14:透过数学计算和graphics绘制点和线来了解3D绘制原理
  2. 实现在echart饼状图上显示百分比,数据
  3. 一文搞定ClickHouse在苏宁用户画像场景的实践(建议收藏)
  4. 玩转单片机得弄明白DMA原理
  5. c语言 课程设计题目,2019年C语言课程设计选题.doc
  6. ORA-01502: 索引或这类索引的分区处于不可用状态
  7. 靠知识付费网课,我投入了一万,1年赚了200万
  8. Lecture19_相机、透镜与光场(Cameras, Lenses and Light Fields)_GAMES101 课堂笔记
  9. gitee仓库的创建和删除
  10. psql屏幕输出全部结果_商业摄影:小商品摄影布光技巧,电子屏幕的拍摄方法...