第十三届蓝桥杯省赛模拟赛

记录下自己的答案,不知对错

1

答案: 318
填空题
问题描述
  以下是一个 25 行 25 列的字母矩阵,全部由字母 A 和 B 组成。
  AAAAAAABABBAABABABAAAAAAA
  ABBBBBABBAABBBBBABABBBBBA
  ABAAABABBBABAABBBBABAAABA
  ABAAABABBBBBAABAABABAAABA
  ABAAABABBABABBABABABAAABA
  ABBBBBABBBABAABBBBABBBBBA
  AAAAAAABABABABABABAAAAAAA
  BBBBBBBBABAABABBBBBBBBBBB
  AABAABABBAAABBAAABABBBBBA
  ABBABABBBABBAAAABBBBAAAAB
  BBBBAAABABAABABAABBBAABBA
  BBAABABABAAAABBBAABBAAAAA
  ABABBBABAABAABABABABBBBBA
  AAAABBBBBABBBBAAABBBABBAB
  AABAABAAABAAABAABABABAAAA
  ABBBBBBBBABABBBBABAABBABA
  ABBBAAABAAABBBAAAAAAABAAB
  BBBBBBBBABBAAABAABBBABBAB
  AAAAAAABBAAABBBBABABAABBA
  ABBBBBABBAABABAAABBBABBAA
  ABAAABABABBBAAAAAAAAAABAA
  ABAAABABABABBBABBAABBABAA
  ABAAABABBABBABABAABAABAAA
  ABBBBBABABBBBBABBAAAABAAA
  AAAAAAABAABBBAABABABBABBA
  请问在这个矩阵中有多少个字母A?
答案提交
  这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int ans=0;
		for(int i=1;i<=25;i++) {
			String s=sc.next();
			for(int j=0;j<s.length();j++) {
				if(s.charAt(j)=='A')
					ans++;
			}
		}
		System.out.println(ans);
	}
}

2

答案:564
如果一个整数的某个数位包含 2 ,则称这个数为一个“最2数字”。例如:102、2021 都是最2数字。
请问在 1(含) 到 2021(含) 中,有多少个最2数字。

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int ans=0;
		for(int i=1;i<=2021;i++) {
			int t=i;
			while(t>0) {
				if(t%10==2) {
					ans++;
					break;
				}
				t/=10;
			}
		}
		System.out.println(ans);//564
	}
}

3

填空题
问题描述
  有一个整数 A=2021,每一次,可以将这个数加 1 、减 1 或除以 2,其中除以 2 必须在数是偶数的时候才允许。
  例如,2021 经过一次操作可以变成 2020、2022。
  再如,2022 经过一次操作可以变成 2021、2023 或 1011。
  请问,2021 最少经过多少次操作可以变成 1。
答案提交
  这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

分析

答案:14
和此题相似:https://blog.csdn.net/weixin_51995229/article/details/123169312

import java.util.ArrayList;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {

		Scanner scanner = new Scanner(System.in);
		ArrayList<ArrayList> a = new ArrayList<>();
		int i = 0;
		ArrayList<Integer> aa = new ArrayList();
		aa.add(2021);
		a.add(aa);
		while (true) {
			// 循环结束条件,经过a.size()次操作得到1
			for (int j = 0; j < a.get(i).size(); j++)
				if (a.get(i).get(j) == Integer.valueOf(1)) {
					System.out.println(a.size() - 1);// 需要减去初始数据2021所占用的一个位置
					return;
				}

			ArrayList<Integer> t = new ArrayList();
			for (int j = 0; j < a.get(i).size(); j++) {
				int temp = (Integer) a.get(i).get(j);
				t.add(temp + 1);// 加
				if (temp % 2 == 0)// 如果可以除2
					t.add(temp / 2);
				t.add(temp - 1);// 减
			}
			a.add(t);
			i++;
		}

	}
}

4

填空题
问题描述
  对于一个 n 行 m 列的表格,我们可以使用螺旋的方式给表格依次填上正整数,我们称填好的表格为一个螺旋矩阵。
  例如,一个 4 行 5 列的螺旋矩阵如下:
  1 2 3 4 5
  14 15 16 17 6
  13 20 19 18 7
  12 11 10 9 8
  请问,一个 30 行 30 列的螺旋矩阵,第 20 行第 20 列的值是多少?
答案提交
  这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

分析

答案:819

解法一

参考:https://blog.csdn.net/maybe_ice/article/details/95674968

解法二 excel

第十三届蓝桥杯省赛模拟赛_第1张图片

5

第十三届蓝桥杯省赛模拟赛_第2张图片

分析

参考:https://blog.csdn.net/m0_57487901/article/details/123684040
在这里插入图片描述

6

第十三届蓝桥杯省赛模拟赛_第3张图片

7

第十三届蓝桥杯省赛模拟赛_第4张图片

8

问题描述
  小蓝有一个插板,形状用一个 n * m 的01矩阵表示,0 表示板面,1 表示插孔。
  小蓝还有一个插头,形状用一个 r * c 的01矩阵表示,0 表示没有伸出的部分,1 表示伸出的部分。插头伸出的部分必须插在插孔里面。
  为了安全,插头插到面板上不能有任何部分超过插板边界(包括没有伸出的部分)。
  插头和插板都不能旋转,也不能翻转。请求出插头插入插板的合理位置。
输入格式
  输入的第一行包含两个整数 n, m。
  接下来 n 行,每行一个长度为 m 的01串,表示插板的形状。
  接下来一行包含两个整数 r, c。
  接下来 r 行,每行一个长度为 c 的01串,表示插头的形状。
输出格式
  如果插头没办法安全插入插板中,输出“NO”。否则输出两个数 a, b,表示插头的第 1 行第 1 列对应插板的第 a 行第 b 列。如果有多种情况满足要求,输出 a 最小的方案,如果 a 最小的方案有多个,输出在 a 最小的前提下 b 最小的方案。
样例输入
3 4
0110
0000
0000
3 3
000
010
000
样例输出
NO
样例说明
  在插头不超出范围的前提下无法插入。
样例输入
4 7
1110100
1101111
0001111
0000011
2 3
111
011
样例输出
2 4
评测用例规模与约定
  对于 50% 的评测用例,2 <= n, m, r, c <= 20。
  对于所有评测用例,2 <= n, m, r, c <= 100。

分析

和此题相似:https://blog.csdn.net/weixin_51995229/article/details/123626509


import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int m = sc.nextInt();

		int[][] a = new int[n][m];

		for (int i = 0; i < n; i++) {
			String s = sc.next();
			for (int j = 0; j < m; j++) {
				a[i][j] = s.charAt(j) - '0';
			}
		}
		int r = sc.nextInt();
		int c = sc.nextInt();
		int[][] b = new int[r][c];
		for (int i = 0; i < r; i++) {
			String s = sc.next();
			for (int j = 0; j < c; j++) {
				b[i][j] = s.charAt(j) - '0';
			}
		}
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < m; j++) {
				if (a[i][j] == b[0][0]) {
					if (n - i > r && m - j > c) {//
						int flag = 1;
						for (int k = 0; k < r; k++) {
							for (int l = 0; l < c; l++) {
								if (b[k][l] == 1) {//需要插
									if (a[i + k][j + l] != 1)//必须要有孔
										flag = 0;
								}
							}
							
						}
						if (flag == 1) {
							System.out.println((i+1) + " " + (j+1));
							return;
						}
					}
				}

			}
		}
		System.out.println("NO");
	}
}

9

问题描述
  给定正整数 a, b, c,请问有多少个正整数,是其中至少两个数的约数。
输入格式
  输入一行包含三个正整数 a, b, c。
输出格式
  输出一行包含一个整数,表示答案。
样例输入
30 70 35
样例输出
6
样例说明
  1、2、5、7、10、35满足条件。
评测用例规模与约定
  对于 50% 的评测用例,1 <= a, b, c <= 1000000。
  对于所有评测用例,a, b, c 不超过 10**12(10的12次方)。

分析


//机器人判分系统要求必须如下规则:
// 1: 不能有package关键字
// 2: 类名必须是Main

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		long a = sc.nextInt();
		long b = sc.nextInt();
		long c = sc.nextInt();
		long max = Math.max(a, b);
		max = Math.max(max, c);
		long ans = 0;
		for (int i = 1; i <= max; i++) {
			int cnt = 0;
			if (a % i == 0)
				cnt++;
			if (b % i == 0)
				cnt++;
			if (c % i == 0)
				cnt++;
			if (cnt >= 2) {
				ans++;
			}
			
		}
		System.out.println(ans);
	}
}
	

10

第十三届蓝桥杯省赛模拟赛_第5张图片

你可能感兴趣的:(蓝桥杯,java,蓝桥杯)