2022年4月蓝桥杯软件类省赛:真题+解析
文章目录
- 试题 A
- 试题 B
- 试题 C
- 试题 D
- 试题 E
- 试题 F
- 试题 G
- 试题 H
- 试题 I
- 试题 J
相关文章:
- 2021年4月蓝桥杯(软件类)省赛:真题+解析
- 2020年10月蓝桥杯(软件类)省赛:真题+解析
- 2020年4月蓝桥杯(软件类)第二次模拟赛:真题+解析
- 2020年3月蓝桥杯(软件类)第一次模拟赛:真题+解析
- 2019年4月蓝桥杯(软件类)省赛:真题+解析
试题 A
试题A:九进制转十进制
本题总分:5分
【问题描述】
九进制正整数(2022)9(2022)_9(2022)9转换成十进制等于多少?
解析:
(2022)9=2∗93+2∗91+2∗90=1478(2022)_9=2*9^3+2*9^1+2*9^0=1478(2022)9=2∗93+2∗91+2∗90=1478
答案:
1478
试题 B
试题B:顺子日期
本题总分:5分
【问题描述】
小明特别喜欢顺子。顺子指的就是连续的三个数字:123、456等。顺子日期指的就是在日期的yyyymmdd表示法中,存在任意连续的三位数是一个顺子的日期。例如20220123就是一个顺子日期,因为它出现了一个顺子:123;而20221023则不是一个顺子日期,它一个顺子也没有。小明想知道在整个2022年份中,一共有多少个顺子日期。
解析:
此题考查的是推理能力。由于年份已经确定,因此只需判断2022mmdd是否包含顺子。
- mm有12种取值,即01~12。符合条件的只有01、11和12,其他月份不可能出现顺子。
- 对于2022-01-dd,只有2022-01-23符合条件
- 对于2022-11-dd,只有2022-11-23符合条件
- 对于2022-12-dd,只有2022-12-30和2022-12-31符合条件
答案:
所以答案是:4
试题 C
试题C:刷题统计
时间限制:1.0s内存限制:256.0MB本题总分:10分
【问题描述】
小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做a道题目,周六和周日每天做b道题目。请你帮小明计算,按照计划他将在第几天实现做题数大于等于n题?
【输入格式】
输入一行包含三个整数a,b和n.
解析: 本题是送分题,使用while循环即可解决。
答案:
#include<iostream>
using namespace std;int main() {int a = 0, b = 0, n = 0;cin >> a >> b >> n;int day = 0;while (n > 0) {day++;if (day % 7 == 0 || day % 7 == 6) //周六、周天n -= b;elsen -= a;}cout << day << endl;return 0;
}
试题 D
试题D:修剪灌木
时间限制:1.0s内存限制:256.0MB本题总分:10分
【问题描述】
爱丽丝要完成一项修剪灌木的工作。
有N棵灌木整齐的从左到右排成一排。爱丽丝在每天傍晚会修剪一棵灌木,让灌木的高度变为0厘米。爱丽丝修剪灌木的顺序是从最左侧的灌木开始,每天向右修剪一棵灌木。当修剪了最右侧的灌木后,她会调转方向,下一天开始向左修剪灌木。直到修剪了最左的灌木后再次调转方向。然后如此循环往复。
灌木每天从早上到傍晚会长高1厘米,而其余时间不会长高。在第一天的早晨,所有灌木的高度都是0厘米。爱丽丝想知道每棵灌木最高长到多高。
解析:
此题可以通过模拟来推到出每棵灌木的最高长度。假设这N棵灌木分别为:n1n_1n1、n2n_2n2、…、nNn_NnN。
- 以n1n_1n1为例,最高的时候是爱丽丝刚走完一个循环(即从左到右,又从右到最左端),这时候高度是2(N-1)。
- 对于n2n_2n2,在从左到右过程中,n2n_2n2比n1n_1n1迟一天砍;在从右到左过程中,n2n_2n2比n1n_1n1早一天砍;所以n2n_2n2比n1n_1n1低2厘米,因此n2n_2n2的最高高度是:2(N-2)
- 依次类推,当i<=N/2时,nin_ini的最高高度是:2(N-i)
- 当i>N/2时,与i<N/2时构成对称关系,直接模拟可得:2∗(i−1)2 * (i - 1)2∗(i−1)
答案:
#include<iostream>
using namespace std;int main() {int N = 0;cin >> N;int height = 0;for (int i = 1; i <= N; i++) {if (i <= N / 2) {height = 2 * (N - i);}else {height = 2 * (i - 1);}cout << height << endl;}return 0;
}
试题 E
试题E:X进制减法
时间限制:1.0s内存限制:256.0MB本题总分:15分
【问题描述】
进制规定了数字在数位上逢几进一。
X进制是一种很神奇的进制,因为其每一数位的进制并不固定!例如说某种X进制数,最低数位为二进制,第二数位为十进制,第三数位为八进制,则X进制数321转换为十进制数为65。
现在有两个X进制表示的整数A和B,但是其具体每一数位的进制还不确定,只知道A和B是同一进制规则,且每一数位最高为N进制,最低为二进制。请你算出A-B的结果最小可能是多少。
请注意,你需要保证A和B在X进制下都是合法的,即每一数位上的数
解析:
本次比较新颖,一部分同学可能搞不清楚X进制运算规则而放弃,其实经过简单的推理就能发现其规则:
对于普通的十进制321 = 3x10x10 + 2x10 + 1x1
对于高位到低位分别为:8、10、2进制的X进制数321,转换为10进制数位:3x10x2 + 2x2 + 1x1 = 65。
解决了X进制转10进制的问题,第二步就是如何设计每一位的进制使得A-B的值最小。A-B通过公式描述如下:A−B=∑(Ai−Bi)∏sjA-B =\sum(A_i-B_i)\prod s_jA−B=∑(Ai−Bi)∏sj
由于A−B=Ai−BiA-B =A_i-B_iA−B=Ai−Bi大小是确定的,所以关键在于使第j位的进制累计乘积∏sj\prod s_j∏sj最小,即要使每一位的进制sjs_jsj尽可能最小,因此:sj=max(max(A[j+1],B[j+1]),1)+1s_j=max(max(A[j+1], B[j+1]), 1)+1sj=max(max(A[j+1],B[j+1]),1)+1
答案:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;int main() {int N = 0; //每一位数的最高进制int Ma = 0; //A的位数int Mb = 0; //B的位数int ans = 0;cin >> N >> Ma;vector<int> A(Ma, 0);for (int i = 0; i < Ma; i++) cin >> A[i];cin >> Mb;vector<int> B(Mb, 0);for (int i = 0; i < Mb; i++) cin >> B[i];vector<int> S(Ma, 1); //第i位的进制累计乘积for (int i=Ma-2; i>=0; i--) { //A>=B,可推Ma>=MbS[i] =(max(max(A[i+1], B[i+1]), 1) + 1)*S[i+1];}for (int i = Ma - 1; i >= 0; i--){ans += S[i] * (A[i] - B[i]);}cout << ans;return 0;
}
试题 F
试题F:统计子矩阵
时间限制:1.0s内存限制:256.0MB本题总分:15分
【问题描述】
给定一个N×M的矩阵A,请你统计有多少个子矩阵(最小1×1,最大NxM)满足子矩阵中所有数的和不超过给定的整数K?
【输入格式】
第一行包含三个整数N,M和K.
之后N行每行包含M个整数,代表矩阵A.
解析:
采用前缀和 + 双指针优化的思想,时间复杂度为:O(n3)O(n^3)O(n3)
答案:
#include<iostream>
#define ll long long
#define N 502
using namespace std;int n, m, k;
int a[N][N], sum[N][N];
ll ans = 0;int main() {cin>>n>>m>>k;for (int i = 1; i <= n; ++i) {for (int j = 1; j <= m; ++j) {cin>>a[i][j]; //输入矩阵中每一个元素a[i][j] += a[i - 1][j] + a[i][j - 1] - a[i - 1][j - 1]; //计算前缀和}}for (int l = 1; l <= m; ++l) {for (int r = l; r <= m; ++r) {for (int i = 1, j = 1; i <= n; ++i) {while (j <= i && (a[i][r] - a[i][l - 1] - a[j - 1][r] + a[j - 1][l - 1]) > k) {++j;}if (j <= i) ans += i - j + 1;}}}cout<<ans;return 0;
}
试题 G
试题 H
试题 I
试题 J
注: 本文答案仅供参考,本文持续更新中,建议大家收藏!
2022年4月蓝桥杯软件类省赛:真题+解析相关推荐
- 算法笔记_110:第四届蓝桥杯软件类省赛真题(JAVA软件开发高职高专组部分习题)试题解答...
目录 1 猜年龄 2 组素数 3 第39级台阶 4 核桃的数量 5 打印十字图 6 买不到的数目 前言:以下试题解答代码部分仅供参考,若有不当之处,还请路过的同学提醒一下~ 1 猜年龄 标题: ...
- 第五届蓝桥杯 软件类省赛真题 第八题:兰顿蚂蚁
标题:兰顿蚂蚁 兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属于细胞自动机的一种. 平面上的正方形格子被填上黑色或白色.在其中一格正方形内有一只"蚂蚁". 蚂蚁的头部 ...
- 【蓝桥杯省赛真题12】python数字组合 青少年组蓝桥杯python编程省赛真题解析
目录 python数字组合 一.题目要求 1.编程实现 2.输入输出 3.评分标准
- 【蓝桥杯省赛真题02】python正方形内切圆 青少年组蓝桥杯python编程省赛真题解析
目录 python绘制正方形内切圆 一.题目要求 1.编程实现 2.评分标准
- 2021年第十二届蓝桥杯软件类省赛python组试题及其解析。
目录 一.卡片 二.直线 三.货物摆放 四.路径 五.回路计算 六.时间显示 七.杨辉三角 八.左孩子右兄弟 九.异或数列 十.括号序列 一.卡片 本题总分:5分 [问题描述] 小蓝有很多数字卡片,每 ...
- 2021年第十二届蓝桥杯软件类省赛python组
目录 2021年第十二届蓝桥杯软件类省赛python组 1.卡片 常规做法 使用functions.Counter计数 2.直线 3.货物摆放 4.路径 5.回路计算 递归--太慢跑不出来 状态压缩D ...
- 蓝桥杯练习系统习题-历年真题解析1(完整版)
文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 蓝桥杯练习系统习题-历年真题解析1 题目搜索方式:Ctrl+F--> 输入题目名称-&g ...
- 第八届蓝桥杯 2017年省赛真题(Java 大学C组)
蓝桥杯 2017年省赛真题 (Java 大学C组 ) 第一题:外星日历 第二题:兴趣小组 第三题:纸牌三角形 第四题:承压计算 第五题:杨辉三角 第六题:最大公共子串 第七题:Excel地址 第八题: ...
- 2018第九届蓝桥杯JavaB组省赛真题及详解
2018第九届蓝桥杯JavaB组省赛真题及详解 第一题:第几天 第二题:方格计数 第三题:复数幂 第四题:测试次数 第五题:快速排序 第六题:递增三元组 第七题:螺旋折线 第八题:日志统计 第九题:全 ...
最新文章
- python查看所有异常_如何获取python异常发生的实际行号?
- 红帽linux登陆错误,xmanager连接RedHat出错:/usr/X11R6/bin/xterm: No such file or directory
- P2 Matlab计算基础-《Matlab/Simulink与控制系统仿真》程序指令总结
- 英语语法---不定式短语详解
- JavaWeb完整项目要用到的专业技能
- 常用jquery鼠标事件和渐变动画效果
- 内存泄露部分检测工具
- JavaEE Tutorials (25) - 使用Java EE拦截器
- LAMP架构(LAMP介绍,mysql/mariaDB介绍,Mysql安装)
- ASP.NET【2】
- 使用draw.io更改形状编辑图表的方法
- 二维码扫码登陆流程设计
- 配置静态IP失败总结
- 老王的JAVA基础课:第3课 IDEA的安装和使用
- shell通过ping实现ip检测
- 科学革命——承认自己无知的革命
- 深入浅出监控神器Prometheus
- 透过细节看日本(转)
- 【对讲机的那点事】如何正确设置和使用对讲机的静噪功能?
- jmeter设置永久中文和解决查看结果树响应中文乱码问题