蓝桥杯真题,求第二空的解析?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蓝桥杯真题,求第二空的解析?相关的知识,希望对你有一定的参考价值。
对一个方阵转置,就是把原来的行号变列号,原来的列号变行号
例如,如下的方阵:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
转置后变为:
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
但,如果是对该方阵顺时针旋转(不是转置),却是如下结果:
13 9 5 1
14 10 6 2
15 11 7 3
16 12 8 4
下面的代码实现的功能就是要把一个方阵顺时针旋转。
void rotate(int* x, int rank)
int* y = (int*)malloc(___________________); // 填空
for(int i=0; i<rank * rank; i++)
y[_________________________] = x[i]; // 填空
for(i=0; i<rank*rank; i++)
x[i] = y[i];
free(y);
int main(int argc, char* argv[])
int x[4][4] = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16;
int rank = 4;
rotate(&x[0][0], rank);
for(int i=0; i<rank; i++)
for(int j=0; j<rank; j++)
printf("%4d", x[i][j]);
printf("\n");
return 0;
请分析代码逻辑,并推测划线处的代码。
2.rank-1-i/rank+i%rank*rank
第二空 :首先对矩阵进行转置:x[i]=y[i%rank*rank+1/rank]
之后进行旋转:x[i]=y[rank-1-i%rank+i/rank*rank]
两者嵌套:x[i]=y[rank-1-(i%rank*rank+1/rank)%rank+(i%rank*rank+1/rank)/rank*rank]
可化简为rank-1-i/rank+i%rank*rank 参考技术A 1.sizeof(int)*rank*rank
2.(rank-i/rank-1)+i%rank*rank
2022年4月蓝桥杯软件类省赛:真题+解析
文章目录
相关文章:
- 2021年4月蓝桥杯(软件类)省赛:真题+解析
- 2020年10月蓝桥杯(软件类)省赛:真题+解析
- 2020年4月蓝桥杯(软件类)第二次模拟赛:真题+解析
- 2020年3月蓝桥杯(软件类)第一次模拟赛:真题+解析
- 2019年4月蓝桥杯(软件类)省赛:真题+解析
试题 A
试题A:九进制转十进制
本题总分:5分
【问题描述】
九进制正整数 ( 2022 ) 9 (2022)_9 (2022)9转换成十进制等于多少?
解析:
(
2022
)
9
=
2
∗
9
3
+
2
∗
9
1
+
2
∗
9
0
=
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;
else
n -= a;
cout << day << endl;
return 0;
试题 D
试题D:修剪灌木
时间限制:1.0s内存限制:256.0MB本题总分:10分
【问题描述】
爱丽丝要完成一项修剪灌木的工作。
有N棵灌木整齐的从左到右排成一排。爱丽丝在每天傍晚会修剪一棵灌木,让灌木的高度变为0厘米。爱丽丝修剪灌木的顺序是从最左侧的灌木开始,每天向右修剪一棵灌木。当修剪了最右侧的灌木后,她会调转方向,下一天开始向左修剪灌木。直到修剪了最左的灌木后再次调转方向。然后如此循环往复。
灌木每天从早上到傍晚会长高1厘米,而其余时间不会长高。在第一天的早晨,所有灌木的高度都是0厘米。爱丽丝想知道每棵灌木最高长到多高。
解析:
此题可以通过模拟来推到出每棵灌木的最高长度。假设这N棵灌木分别为:
n
1
n_1
n1、
n
2
n_2
n2、…、
n
N
n_N
nN。
- 以 n 1 n_1 n1为例,最高的时候是爱丽丝刚走完一个循环(即从左到右,又从右到最左端),这时候高度是2(N-1)。
- 对于 n 2 n_2 n2,在从左到右过程中, n 2 n_2 n2比 n 1 n_1 n1迟一天砍;在从右到左过程中, n 2 n_2 n2比 n 1 n_1 n1早一天砍;所以 n 2 n_2 n2比 n 1 n_1 n1低2厘米,因此 n 2 n_2 n2的最高高度是:2(N-2)
- 依次类推,当i<=N/2时, n i n_i ni的最高高度是: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进制下都是合法的,即每一数位上的数
试题 F
试题F:统计子矩阵
时间限制:1.0s内存限制:256.0MB本题总分:15分
【问题描述】
给定一个N×M的矩阵A,请你统计有多少个子矩阵(最小1×1,最大NxM)满足子矩阵中所有数的和不超过给定的整数K?
【输入格式】
第一行包含三个整数N,M和K.
之后N行每行包含M个整数,代表矩阵A.
解析:
试题 G
试题 H
试题 I
试题 J
注: 本文答案仅供参考,本文持续更新中,建议大家收藏!
《新程序员》:云原生和全面数字化实践 50位技术专家共同创作,文字、视频、音频交互阅读以上是关于蓝桥杯真题,求第二空的解析?的主要内容,如果未能解决你的问题,请参考以下文章
蓝桥杯选拔赛真题04python单词频次 青少年组蓝桥杯python 选拔赛STEMA比赛真题解析
蓝桥杯选拔赛真题07python杨辉三角形 青少年组蓝桥杯python 选拔赛STEMA比赛真题解析