2020第十一届蓝桥杯第二场JavaB组
第一题:门牌制作(624)
题目大意:
- 判断1到2020里面共有多少个‘2’;
解析:
- 本题简而言之就是找‘2’这一个数
- 第一种方法:遍历将其转换为字符然后再遍历寻找
- 第二种方法:直接用数值的方法进行计算
以下为运行成功的代码 :
/*
* 第一题:判断1到2020里面共有多少个‘2’
* @ac
*/
/*
* 第一种方法:先将其转换为字符,然后再遍历寻找
* 第二种:直接用数值的方法进行计算
*/
//public class test01 {
//
// public static void main(String[] args) {
// // TODO Auto-generated method stub
//
// int ans=0;
// char ch[] = null;
// for (int i = 1; i <=2020; i++) {
// ch=Integer.toString(i).toCharArray();
// for (int j = 0; j < ch.length; j++) {
// if(ch[j]=='2')
// ans++;
// }
// }
// System.out.println(ans);
// }
//
//}
public class test01{
public static void main(String[] args) {
int ans=0;
for (int i = 1,n=1; i <=2020;n=++i) {
do {
if(n%10==2)
ans++;
}
while((n/=10)>0);
}
System.out.println(ans);
}
}
第二题:寻找2020(16520)
题目大意:
- 简而言之即:在一个数字矩阵里面找2020,同一行从左到右,同一列从上到下,斜线上左上到右下构成
解析:
- 在输入数据的时候可以采用原始的方式从键盘输入,或者熟悉输入流导入
- 层层暴力遍历寻找满足条件的数,感觉暴力出奇迹哈哈哈
以下是运行成功的代码:
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
/*
* 寻找2020,在一个数字矩阵里找2020,同一行从左到右,同一列
* 从上到下,斜线上左上到右下构成
* @ac
*/
import java.util.Scanner;
public class test02{
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);//采用的直接从键盘输入方式
int[][] num = new int[305][305];
for (int i=1;i<=300;i++) {
String str = in.next();
for (int j=1;j<=str.length();j++) {
num[i][j] = str.charAt(j-1) - '0';//得到相应的整数
}
}
int ans = 0;
for (int i=1;i<=300;i++) {
for (int j=1;j<=300;j++) {
if (i+3<=300 && num[i][j]==2 && num[i+1][j]==0 && num[i+2][j]==2 && num[i+3][j]==0)
ans++;
}
}
for (int i=1;i<=300;i++) {
for (int j=1;j<=300;j++) {
if (j+3<=300 && num[i][j]==2 && num[i][j+1]==0 && num[i][j+2]==2 && num[i][j+3]==0)
ans++;
}
}
for (int i=1;i<=300;i++) {
for (int j=1;j<=300;j++) {
if (i+3<=300 && j+3<=300 && num[i][j]==2 && num[i+1][j+1]==0 && num[i+2][j+2]==2 && num[i+3][j+3]==0)
ans++;
}
}
System.out.println(ans);
}
}
第三题:蛇形填数(761)
题目大意:
- 根据以下的图形以及数值,我们可以知道第二行第二列的数值为5,现在求第20行第20列的数值为多少?
/*
* 蛇形填数:
* 1 2 6 7 15 ...
* 3 5 8 14 ...
* 4 9 13 ...
* 10 12 ...
* 11 ...
* ...
*
* @ac
*/
解析:
找规律:
行(a) 第i行第i列的那个数值前面有几条斜线(b) 所在位置的数值(c)
a b c
1 1 1
2 2 5
3 4 13
4 6 25
5 8 41
6 10 61
... ... ...
20 20*2-2 20*38+1=761
解析:
发现a与b的关系为a*2-b
这三者的关系为:a*b+1=c
第六题:
题目大意
/*
* 成绩分析:
* 求最高分、最低分、平均分
*
* 输入格式:
* 第一行一个整数n,表示考试人数
* 接下里n行,每行包含一个0到100的整数,表示一个学生的得分
*
* 输出格式:
* 输出三行
* 第一行一个整数表示最高分
* 第二行一个整数表示最低分
* 第三行一个实数、四舍五入保留正好两位小数,表示平均分
*/
以下为运行成功的代码:
import java.util.Arrays;
import java.util.Scanner;
/*
* 成绩分析:
* 求最高分、最低分、平均分
*
* 输入格式:
* 第一行一个整数n,表示考试人数
* 接下里n行,每行包含一个0到100的整数,表示一个学生的得分
*
* 输出格式:
* 输出三行
* 第一行一个整数表示最高分
* 第二行一个整数表示最低分
* 第三行一个实数、四舍五入保留正好两位小数,表示平均分
*/
public class test06 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner (System.in);
int n=in.nextInt();int a;
int max=Integer.MIN_VALUE,min=Integer.MAX_VALUE;
double sum=0;
for (int i = 0; i < n; i++) {
a=in.nextInt();
sum+=a;
if(a>max)
max=a;
if(min>a)
min=a;
}
System.out.println(max);
System.out.println(min);
System.out.println(String.format("%.2f",sum/n));
}
}
第七题:
题目大意:
版权声明:本文为lwyy1223-原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。