15届蓝桥杯第三期模拟赛所有题目解析

news2024/10/5 16:27:57

文章目录

    • 🧡🧡t1_奇数次数🧡🧡
      • 思路
      • 代码
    • 🧡🧡t2_台阶方案🧡🧡
      • 思路
      • 代码
    • 🧡🧡t3_约数个数🧡🧡
      • 思路
      • 代码
    • 🧡🧡t4_最大子矩阵🧡🧡
      • 思路
      • 代码
    • 🧡🧡t5_最少步数🧡🧡
      • 思路
      • 代码
    • 🧡🧡t6_最大极小值与最小极大值🧡🧡
      • 思路
      • 代码
    • 🧡🧡t7_最大的Y🧡🧡
      • 思路
      • 代码
    • 🧡🧡t8_左右相同🧡🧡
      • 思路
      • 代码
    • 🧡🧡t9_求余数🧡🧡
      • 思路
      • 代码
    • 🧡🧡t10_区间计数🧡🧡
      • 思路
      • 代码
    • 🧡🧡t11_数位和🧡🧡
      • 思路
      • 代码

前两期题目解析👇
15届蓝桥杯第一期模拟赛题单详细解析
15届蓝桥杯第二期模拟赛题单详细解析

🧡🧡t1_奇数次数🧡🧡

在这里插入图片描述
在这里插入图片描述

思路

遍历判断即可,简单。

代码

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		String string = sc.next();
		int cnt = 0;
		for (char c : string.toCharArray()) {
			if ((int) (c - '0') % 2 == 1)
				cnt++;
		}
		System.out.println(cnt);
	}
}

🧡🧡t2_台阶方案🧡🧡

在这里插入图片描述
在这里插入图片描述

思路

一开始想着直接dfs深搜,但试了下n=1000的情况,跑了很久都没结果,估计了一下时间复杂度为 3 0 + 3 1 + . . . . . . 3 1000 3^0+3^1+......3^{1000} 30+31+......31000。因此小一点的n还可以直接搜出答案,但是过大就不行。
尝试找规律:可以发现,若走台阶方法为a=1,b=2,c=3的情况下,n取1到10,分别为:
在这里插入图片描述
可以发现(用f[i]表示对于n=i的方案数):

  • f [4] = f [1] +f [2] +f [3]
  • f [5] = f [2] +f [3] +f [4]
  • f [6] = f [3] +f [4] +f [5]
  • 因此可以归纳出:f【n】=f【n-1】+f【n-2】+f【n-3】。代表什么含义呢?拿f [6]解释,可以理解为:
    在a=1,b=2,c=3三种跨台阶阶级的情况下,n=6可以
    - 从n=5走a=1阶到达,即在n=5的情况下,再走1次 a=1阶就能到达n=6
    - 从n=4走b=2阶到达,即在n=4的情况下,再走1次b=2阶就能到达n=6
    - 从n=3走c=3阶到达,即在n=3的情况下,再走1次 c=3阶就能到达n=6

从而, 更一般地归纳为:f【n】=f【n-a】+f【n-b】+f【n-c】,因此只要逐个递推出f【n】即可。
需要额外规定的是,f【0】=1。

代码

import java.util.Scanner;
public class Main {
  public static int a, b, c;
	public static int[] f = new int[1000010];
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();
		a = scanner.nextInt();
		b = scanner.nextInt();
		c = scanner.nextInt();

		f[0] = 1;
		for (int i = 1; i <= n; i++) {
			if (i - a >= 0)
				f[i] = (f[i] + f[i - a]) % 1000000007;
			if (i - b >= 0)
				f[i] = (f[i] + f[i - b]) % 1000000007;
			if (i - c >= 0)
				f[i] = (f[i] + f[i - c]) % 1000000007;
		}
		System.out.println(f[n] % 1000000007);
	}
}

🧡🧡t3_约数个数🧡🧡

在这里插入图片描述

思路

枚举

代码

public class Main {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int cnt = 0;
		for (int i = 1; i <= 2023; i++) {
			if (2023 % i == 0)
				cnt++;
		}
		System.out.println(cnt);
	}
}

🧡🧡t4_最大子矩阵🧡🧡

在这里插入图片描述

9719 7515 5916 6467 7157 9614 8560 9075 2099 2838 1403 7652 6238 1699 8907 1804 5384 7942 7546 1978
8785 1944 8108 6040 2010 6646 2750 5410 4516 8757 5624 9257 9030 9290 6833 4646 9749 5304 5633 1573
8525 8244 8514 7474 7896 9731 8402 9036 1869 2688 2085 1667 7753 8466 4911 3812 8585 8319 4020 7350
1949 9120 4424 4057 8277 4511 6333 1533 7624 8932 1053 8682 9284 4134 1466 3607 8753 5310 3728 4163
9420 9185 7055 2342 4143 4499 2036 5374 7026 8638 8866 8364 1706 8767 1601 8309 5695 8179 4142 8489
5876 5660 4658 8307 2582 7544 8793 8207 3979 1692 1400 1893 4500 6389 7198 4836 4761 6603 2859 1312
6367 4174 9956 6668 6771 4795 6492 3937 7096 8041 8644 9379 8071 8667 5810 5794 8147 3823 7877 4822
4809 3297 8518 4972 9754 6854 3271 7891 8882 1052 3197 6035 5628 7674 7931 8085 8970 7733 4745 8785
7536 1511 6964 4763 5409 7032 8963 8576 3411 5853 3316 1267 7851 2735 6953 2970 1810 6830 5576 6903
2241 1575 2379 4679 9519 9290 4802 1562 3509 8365 6777 5143 5610 1061 7880 1935 5793 7023 5629 9571
2480 5937 4612 8890 1964 8532 3309 9737 8507 1849 8544 1500 9282 6288 2137 4730 4239 3473 4643 6377
7341 2881 3430 5815 1972 6629 3817 4547 7561 4779 6578 6114 4972 5505 7515 1800 4784 2272 4502 7541
7665 8607 2022 8192 2605 1346 4155 8725 8167 7022 6136 3615 6057 6329 8671 2033 3151 2249 5981 6412
9046 3353 8650 6965 4179 1248 5659 5219 8083 5615 3821 4436 9217 7356 3914 5717 3734 3765 4435 7210
8951 5013 2951 7401 2329 5686 6530 9581 6539 6881 8634 2663 2916 3019 8529 5645 8201 9270 1939 7275
6429 1531 6322 9586 2793 7968 4001 9665 7624 4369 6245 5146 9567 6801 6064 6199 3210 6753 2586 7795
5771 8507 7973 1470 1475 6896 6781 6572 8412 8557 8255 5268 8960 7251 9214 2489 6920 9917 3810 4605
9116 7950 3715 1697 4703 2868 8673 3106 2579 1074 3992 3547 4279 3149 3396 6081 6221 1125 9358 2471
8360 1526 4116 9278 6325 5175 5533 4107 7522 7599 7711 9211 1752 2431 8321 3844 3579 1047 3987 8487
7600 2401 8748 8945 2078 1519 4614 4576 5706 4040 9358 1928 1327 6699 5258 2846 3418 8310 1249 3866
7796 8668 4087 4258 8992 8996 4617 5997 2527 8204 8927 1456 9340 2088 1605 2299 9878 8347 7789 2122
8372 1102 4243 4208 1651 7861 4947 7802 4704 6204 4455 6012 8494 9060 3747 2786 2136 1830 7424 8309
6919 4420 2031 5399 2652 7219 4048 7013 5094 5276 4225 5976 4157 6722 8765 4679 1604 4986 5033 2623
4015 2297 3067 6261 6623 4577 4589 4747 6659 7667 7853 4040 6393 9606 7219 9334 1316 3430 9963 5187
4998 3735 9884 2990 1374 8436 6674 3018 5714 9352 8708 8789 7879 2965 1444 4671 4743 9817 6066 8057
6996 9609 2884 4601 7287 3432 4145 8858 6857 8624 4531 6579 1615 2894 4521 3274 5237 1093 3317 9289
7117 1850 3210 8010 2512 1394 4718 9332 5593 4118 4995 3994 5063 9426 1709 5128 4997 9287 1907 9068
4258 7328 6490 2603 5333 5093 8070 2116 8489 1994 7098 7409 1463 4268 9509 2358 1192 2460 5031 6292
4911 1192 1012 2494 5276 8981 3540 3306 8869 6678 7879 7526 8847 6270 7653 3109 6955 9760 8520 8673
6328 7277 7818 3285 9398 4929 4639 1617 4023 1051 9320 4955 6580 6481 3824 9611 2863 6492 6281 6203

思路

方法1:最简单的,由于是填空题,且数据大小只有30×20,可以直接模拟一个5×5的小正方形,依次计算最值即可。(类似CNN卷积核提取特征)
方法2:可对方法1进行时间优化,利用前缀和思想。

代码

import java.util.Scanner;
public class t4_最大子矩阵 {
	public static int[][] grid = new int[35][25];
	public static int[][] s = new int[35][25];

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// Scanner scanner = new Scanner(System.in);
		// int n = 30;
		// int m = 20;
		// int k = 5;
		// for (int i = 1; i <= n; i++) {
		// 	for (int j = 1; j <= m; j++) {
		// 		grid[i][j] = scanner.nextInt();
		// 	}
		// }

		// for (int i = 1; i <= n; i++) {
		// 	for (int j = 1; j <= m; j++) {
		// 		s[i][j] = s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1] + grid[i][j];
		// 	}
		// }

		// int maxv = Integer.MIN_VALUE;
		// for (int i = 1; i <= n - 5 + 1; i++) {
		// 	for (int j = 1; j <= m - 5 + 1; j++) {
		// 		int tmp = s[i + k - 1][j + k - 1] - s[i + k - 1][j - 1] - s[i - 1][j + k - 1] + s[i - 1][j - 1];
		// 		maxv = Math.max(maxv, tmp);
		// 	}
		// }
		// System.out.println(maxv); 
		System.out.println(171248); 
	}
}

🧡🧡t5_最少步数🧡🧡

在这里插入图片描述

思路

咋一看跟t2_台阶方案好像,实则就是数学问题。要求最小步数,保证每一步尽量跨最大一步(3)即可,直到剩下的台阶用1或2补足就好了。

代码

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();

		int ans = 0;
		if (n % 3 == 0)
			ans = n / 3;
		else
			ans = n / 3 + 1;
		System.out.println(ans);
	}
}

🧡🧡t6_最大极小值与最小极大值🧡🧡

在这里插入图片描述

思路

枚举

代码

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();
		int[] arr = new int[n + 1];
		for (int i = 1; i <= n; i++) {
			arr[i] = scanner.nextInt();
		}
		int minv = Integer.MAX_VALUE;
		int maxv = Integer.MIN_VALUE;
		for (int i = 1; i <= n - 1; i++) {
			if (arr[i] < arr[i - 1] && arr[i] < arr[i + 1])
				maxv = Math.max(maxv, arr[i]);
			if (arr[i] > arr[i - 1] && arr[i] > arr[i + 1])
				minv = Math.min(minv, arr[i]);
		}
		System.out.println(maxv + " " + minv);
	}
}

🧡🧡t7_最大的Y🧡🧡

在这里插入图片描述

7 7
1000001
0100010
0010100
0001AAA
00010A0
00010A0
00010A0
3

思路

遍历每个坐标点,依次在该点上模拟三个方向,计算三个方向各自所能到达的距离,取它们的最小值,即为该点的“Y的长度”。最后,取所有点的“Y的长度”的最大值即为答案。

代码

import java.util.Scanner;
public class Main {
	public static char[][] grid = new char[1005][1005];
	public static int n, m;

	public static int check(int x, int y, char ch) {
		// 左上45度
		int tx = x - 1;
		int ty = y - 1;
		int cnt1 = 0;
		while (tx >= 1 && tx <= n && ty >= 1 && ty <= m && grid[tx][ty] == ch) {
			cnt1++;
			tx--;
			ty--;
		}
//		System.out.println(tx + " " + ty);

		// 右上45度
		tx = x - 1;
		ty = y + 1;
		int cnt2 = 0;
		while (tx >= 1 && tx <= n && ty >= 1 && ty <= m && grid[tx][ty] == ch) {
			cnt2++;
			tx--;
			ty++;
		}

		// 正下4
		tx = x + 1;
		ty = y;
		int cnt3 = 0;
		while (tx >= 1 && tx <= n && ty >= 1 && ty <= m && grid[tx][ty] == ch) {
			cnt3++;
			tx++;
		}

		return Math.min(Math.min(cnt1, cnt2), cnt3);

	}

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		n = scanner.nextInt();
		m = scanner.nextInt();
		for (int i = 1; i <= n; i++) {
			String str = scanner.next();
			for (int j = 1; j <= m; j++) {
				grid[i][j] = str.charAt(j - 1);
			}
		}

		int ans = Integer.MIN_VALUE;
		for (int i = 1; i <= n; i++) {
			for (int j = 1; j <= m; j++) {
				ans = Math.max(ans, check(i, j, grid[i][j]));
			}
		}

		System.out.println(ans);
	}
}

🧡🧡t8_左右相同🧡🧡

在这里插入图片描述

思路

枚举模拟

代码

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		String s = sc.next();
		int ans = 0;
		int cnt1 = 0;
		int cnt2 = 0;
		for (int i = 0; i < s.length(); i++) {
			char ch = s.charAt(i);
			if (ch == 'L')
				cnt1++;
			else
				cnt2++;
			if (cnt1 == cnt2)
				ans++;
		}
		System.out.println(ans);
	}
}

🧡🧡t9_求余数🧡🧡

在这里插入图片描述

思路

跟第二期模拟赛的第1道题差不多,也是大数问题,这里直接采用BigInteger来处理了。

代码

import java.math.BigInteger;
public class Main {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		BigInteger n1 = new BigInteger("12345678901234567890123456789012345678901234567890");
		BigInteger n2 = new BigInteger("2023");
		BigInteger res = n1.mod(n2);
		System.out.println(res.toString());
	}
}

🧡🧡t10_区间计数🧡🧡

在这里插入图片描述

思路

枚举

代码

public class Main {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int ans = 0;
		for (int l = 0; l <= 100; l++) {
			for (int r = l; r <= 100; r++) {
				if (r - l >= 10)
					ans++;
			}
		}
		System.out.println(ans);
	}
}

🧡🧡t11_数位和🧡🧡

在这里插入图片描述

思路

枚举模拟

代码

public class Main {
	public static boolean isPrime(int n) {
		if (n <= 1)
			return false;
		if (n == 2)
			return true;
		for (int i = 2; i <= Math.sqrt(n); i++) {
			if (n % i == 0)
				return false;
		}
		return true;
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int ans = 0;
		for (int i = 1; i <= 1000000; i++) {
			if (isPrime(i)) {
				int x = i;
				int tmp = 0;
				while (x > 0) {
					tmp += x % 10;
					x /= 10;
				}
				if (tmp == 23)
					ans++;
			}

		}
		System.out.println(ans);
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1523594.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

特殊文本文件、日志技术

特殊文件 为什么要用这些特殊文件&#xff1f; 存储多个用户的&#xff1a;用户名、密码 特殊文件:Properties属性文件 特点&#xff1a; 都只能是键值对键不能重复文件后缀一般是.properties结尾的 作用&#xff1a;存储一些有关系的键值对数据 Properties 是一个Map集合(键…

Ubuntu Argoverse API安装

1. 创建并进入conda环境 conda create -n Argoverse python3.8 conda activate Argoverse2. 拉取argoverse-api源码 git clone https://github.com/argoai/argoverse-api.git3. 下载高精地图 Download hd_maps.tar.gz from Argoverse 4. 安装api cd argoverse-api pip in…

STM32 Simulink 自动代码生成电机控制——霍尔有感六步方波仿真到开发板运行

目录 前言 方波控制理论 仿真 代码集成到开发板运行 总结 前言 回想以前在学校手写代码实现方波控制&#xff0c;花了不少时间。现在各大MCU厂家都有自己的有感或者无感方波控制的方案。这次尝试用Simulink来完成应用层算法的仿真再到代码生成开发板运行的完整流程。 方波…

达梦数据库管理

一、表空间管理介绍 在 DM 数据库中&#xff0c;表空间由一个或者多个数据文件组成。 DM 数据库中的所有对象在逻辑上都存放在表空间中&#xff0c;而物理上都存储在所属表空间的数据文件中。 DM数据库中的表空间可以分为普通表空间和混合表空间。普通表空间不能存储HUGE表&…

《IEEE Transactions on Robotics》发表!北京大学研究团队推出具有多种运动模态的软体两栖机器人

两栖机器人以其在复杂水陆混合环境中的卓越适应性而脱颖而出&#xff0c;成为非结构化场景下信息监测、资源勘探和灾难救援等多元化任务的理想选择。凭借能够在水生和陆生环境中自如切换的优势&#xff0c;两栖机器人在如上任务执行过程中展现出对多变环境的惊人适应能力。 在…

【Godot4.2】颜色完全使用手册

概述 本篇简单汇总Godot中的颜色的构造和使用&#xff0c;内容包括了&#xff1a; RGB、RGBA&#xff0c;HSV以及HTML16进制颜色值、颜色常量等形式构造颜色颜色的运算以及取反、插值用类型化数组、紧缩数组或PNG图片形式存储多个颜色 构造颜色 因为颜色是一种视觉元素&…

配置Web运行环境与第一个网页

安装与配置Web环境: 如下使用了VSC作为web的运行环境。 下面是VSC的官网:Download Visual Studio Code - Mac, Linux, Windowshttps://code.visualstudio.com/download 进入官网后按照自己的系统下载&#xff0c;我下载的是Windows. 下载完之后双击打开。 接下来就是安装&…

探讨TCP的可靠性以及三次握手的奥秘

&#x1f31f; 欢迎来到 我的博客&#xff01; &#x1f308; &#x1f4a1; 探索未知, 分享知识 !&#x1f4ab; 本文目录 1. TCP的可靠性机制1.2可靠性的基础上,尽可能得提高效率 2. TCP三次握手过程3. 为何不是四次握手&#xff1f; 在互联网的复杂世界中&#xff0c;TCP&am…

Autosar Crypto Driver学习笔记(二)

文章目录 Crypto DriverFunction definitionsGeneral APICrypto_InitCrypto_GetVersionInfo Job Processing InterfaceCrypto_ProcessJob Job Cancellation InterfaceKey Management InterfaceKey Setting Interface密钥设置接口Crypto_KeyElementSetCrypto_KeySetValid Key Ex…

Linux操作系统及进程(一)

一、操作系统的概念 概念 &#xff1a;任何计算机系统都包含一个基本的程序集合&#xff0c;称为操作系统(OS)。笼统的理解&#xff0c;操作系统包括&#xff1a; 内核&#xff08;进程管理&#xff0c;内存管理&#xff0c;文件管理&#xff0c;驱动管理&#xff09; 其他程…

Redis淘汰策略,持久化和集群

Redis淘汰策略 Redis 的 OBJECT 命令提供了多个子命令&#xff0c;用于检查有关键的内部详细信息。以下是可用的子命令及其描述&#xff1a; ENCODING <key>&#xff1a;返回用于存储与键关联的值的内部表示类型。 FREQ <key>&#xff1a;返回键的访问频率索引。返…

并查集

数据结构、算法总述&#xff1a;数据结构/基础算法 C/C_禊月初三的博客-CSDN博客 并查集是一种用于管理元素所属集合的数据结构&#xff0c;实现为一个森林&#xff0c;其中每棵树表示一个集合&#xff0c;树中的节点表示对应集合中的元素。 基本操作&#xff1a; 初始化&…

Windows→Linux,本地同步到服务器

适用背景&#xff1a; 用自己电脑修改代码&#xff0c;使用实验室/公司的服务器炼丹的朋友 优势&#xff1a; 本地 <--> 服务器&#xff0c;实时同步&#xff0c;省去文件传输的步骤 本地改 -> 自动同步到服务器 -> 服务器跑代码 -> 一键同步回本地&#xff…

Elasticsearch:调整搜索速度

在我之前的文章 “Elasticsearch&#xff1a;如何提高查询性能” 及 “Elasticsearch&#xff1a;提升 Elasticsearch 性能” 里&#xff0c;我详细描述了如何提高搜索的性能。在今天的文章里&#xff0c;我从另外一个视角来描述如何调整搜索的速度。希望对大家有所帮助&#x…

Python之Web开发中级教程----搭建虚拟环境

Python之Web开发中级教程----搭建Web框架二 搭建虚拟环境 虚拟环境的作用 虚拟环境可以搭建独立的python运行环境, 使得单个项目的运行环境与其它项目互不影响. 搭建虚拟环境 &#xff08;1&#xff09;安装 sudo pip install virtualenv sudo pip install virtualenvwra…

【LabVIEW FPGA入门】定时

在本节学习使用循环计时器来设置FPGA循环速率&#xff0c;等待来添加事件之间的延迟&#xff0c;以及Tick Count来对FPGA代码进行基准测试。 1.定时快捷VI函数 在FPGA VI中放置的每个VI或函数都需要一定的时间来执行。您可以允许操作以数据流确定的速率发生&#xff0c;而无需额…

科研学习|论文解读——交替协同注意力网络下基于属性的情感分析 (IPM, 2019)

论文题目 Aspect-based sentiment analysis with alternating coattention networks 摘要 基于属性的情感分析&#xff08;ABSA&#xff09;旨在预测给定文本中特定目标的情感极性。近年来&#xff0c;为了获得情感分类任务中更有效的特征表示&#xff0c;人们对利用注意力网络…

使用kettle导入Elasticsearch数据库

资源文件&#xff1a; 操作步骤&#xff1a; 1、删除data-integration\lib 下 所有 jackson- 开头的jar包&#xff0c;然后把jackson-2.8.10-libs文件夹中的jar拷到lib目录下 2、替换data-integration\plugins\elasticsearch-bulk-insert-plugin文件夹 3、如果开启了ssl认证…

Spring6--IOC反转控制 / 基于XML管理bean

1. 容器IOC 先理解概念&#xff0c;再进行实际操作。概念比较偏术语化&#xff0c;第一次看可能看不懂&#xff0c;建议多看几遍&#xff0c;再尝试自己独立复述一遍&#xff0c;效果会好些 1.1. IOC容器 1.1.1. 控制反转&#xff08;IOC&#xff09; IOC (Inversion of Con…

27-Java MVC 模式

Java空对象模式 实现范例 MVC模式代表 Model-View-Controller&#xff08;模型-视图-控制器&#xff09; 模式MVC模式用于应用程序的分层开发 Model&#xff08;模型&#xff09; - 模型代表一个存取数据的对象或 JAVA POJO 它也可以带有逻辑&#xff0c;在数据变化时更新控制…