image

编辑人: 桃花下浅酌

calendar2025-08-03

message5

visits886

第十四届蓝桥杯青少组选拔赛Python真题(2022年11月27日)参考答案

一、实操题

1、输入一个整数N(-100≤N≤100),输出N+10的结果。

例如:N = 5,5 + 10 的结果为15(15=5+10)。

【输入描述】

输入一个整数N(-100≤N≤100)

【输出描述】

输出一个整数,表示N+10的结果


【样例输入】

5

【样例输出】

15

参考答案:根据题目要求,输入一个整数N(-100≤N≤100),输出N+10的结果。


2、输入一个包含字符‘a’的字符串(字符串长度小于1000),输出字符串中字符‘a’的个数。

【输入描述】

输入一个包含字符‘a’的字符串

【输出描述】

输出一个整数,表示字符串中字符‘a’的个数


【样例输入】

ab!a

【样例输出】

2


参考答案:输入一个包含字符‘a’的字符串,输出字符串中字符‘a’的个数。


3、现将N(3≤N≤600)根胡萝卜全部分配给黑、白、灰三只兔子,分配规则如下:

1)黑、白、灰三只兔子必须都能分到胡萝卜;

2)黑兔子的胡萝卜数大于或等于白兔子的胡萝卜数;

3)白兔子的胡萝卜数大于或等于灰兔子的胡萝卜数;

请按照规则计算,将N根胡萝卜全部分配给三只兔子,共有多少种不同的分配方法。

例如:N = 8,按照分配规则有5种不同的分配方法,具体分配方法如下图:

【输入描述】

输入一个正整数N(3≤N≤600),表示胡萝卜的数量

【输出描述】

输出一个整数,表示将N根胡萝卜全部分配给三只兔子,共有多少种不同的分配方法


【样例输入】

8

【样例输出】

5

参考答案:对于这个问题,我们可以使用动态规划来解决。我们可以定义一个三维数组dp[i][j][k],其中i表示黑兔子的胡萝卜数量,j表示白兔子的胡萝卜数量,k表示灰兔子的胡萝卜数量。dp[i][j][k]表示黑兔子有i个胡萝卜,白兔子有j个胡萝卜,灰兔子有k个胡萝卜的分配方法数。根据题目要求,我们可以得到以下状态转移方程:1. 当i=1时,j和k的取值范围为[0,N-1],dp[1][j][k] = 1(只有一种分配方法)。2. 当i>1时,j和k的取值范围为[0,i-1],dp[i][j][k] = dp[i-1][j][k] + dp[i-1][j-1][k] + dp[i-1][j][k-1]。最后,我们遍历所有可能的i、j、k的取值,累加dp[i][j][k]即可得到总的分配方法数。


4、某服务大厅同时开放3个窗口为客户办理业务,窗口编号分别为1、2、3。

现有N(2≤N≤50)位客户需要办理业务,客户编号为1~N,作为办理业务的先后顺序。

起初三个窗口为空闲状态,空闲的窗口会按照客户编号顺序呼叫下一位客户。如果多个窗口同时为空闲状态,按照窗口编号顺序呼叫(1优先于2,2优先于3)。

现给出每位客户办理业务的时间(单位:分钟),请计算出N位客户全部办理完业务后,哪一个窗口合计办理业务的时间最短,并输出最短时间。

例如:N=7,7位客户编号分别为1、2、3、4、5、6、7,客户办理业务时间分别为3、5、2、4、7、1、6,(如下图):

初始客户编号为 1、2、3 的客户分别在 1、2、3 窗口同时办理业务;

窗口 3 用时 2 分钟办理完 3 号客户的业务,变为空闲状态,并按顺序呼叫 4 号客户,4 号客户用时 4 分钟。

窗口 1 用时 3 分钟办理完 1 号客户的业务,变为空闲状态,并按顺序呼叫 5 号客户,5 号客户用时 7 分钟。

窗口 2 用时 5 分钟办理完 2 号客户的业务,变为空闲状态,并按顺序呼叫 6 号客户,6 号客户用时 1 分钟。

6 分钟后,窗口 2 和 3 同时变为空闲状态,按顺序窗口 2 呼叫 7 号客户,7 号客户用时 6分钟。

全部客户办理完业务后,三个窗口总用时分别为 10分钟、12分钟、6分钟,用时最短的是窗口 3,最短时间为 6 分钟。

【输入格式】

第一行输入一个正整数 N(2 ≤ N ≤ 50),表示办理业务的客户数。

第二行输入 N 个正整数(1 ≤ 正整数 ≤ 50),依次表示每位客户办理业务的时间,正整数之间以一个空格隔开。

【输出格式】

输出一个整数,表示客户全部办理完业务,用时最短的窗口所用时间。


【输入样例】

7
3 5 2 4 7 1 6

【输出样例】

6

参考答案:首先,读取输入数据,包括客户数N和客户办理业务的时间列表。然后,模拟窗口呼叫客户的过程,计算每个窗口的办理业务时间。最后,找出办理业务时间最短的窗口,并输出其用时。


5、现有 22 名小朋友,依次编号 1 到 22,22 名小朋友分别按照下图的位置站好。

每名小朋友只能按照图中箭头指向的方向移动。给出两名小朋友的编号 N 和 M(1≤ N < M ≤ 22),请你找出从编号 N 到编号 M 共有多少条不同的路线。

例如:N = 3,M = 7,从编号 3 的位置到编号 7 的位置共有 5 条路线,分别为:(3->5->7),(3->5->6->7),(3->4->5->7),(3->4->5->6->7),(3->4>6->7)。

【输入格式】

输入两个正整数 N 和 M(1 ≤ N < M ≤ 22),分别表示两名小朋友的编号,之间以一个空格隔开。

【输出格式】

输出一个整数,表示从编号 N 到编号 M 共有多少条不同的路线。


【输入样例1】

3 7

【输出样例1】

5

参考答案:```#include #include using namespace std;int uniquePaths(int N, int M) vector> dp(23, vector(23, 0));for (int i = 0; i < 23; i++) {dp[i][i] = 1;}for (int len = 2; len <= 22; len++) {for (int i = 1; i + len - 1 <= 22; i++) {int j = i + len - 1;dp[i][j] = dp[i + 1][j] + dp[i][j - 1];}}int res = 0;for (int i = N; i <= M; i++) {res += dp[N][i];}return res;int main() int N, M;cin >> N >> M;cout << uniquePaths(N, M) << endl;return 0;```


喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:第十四届蓝桥杯青少组选拔赛Python真题(2022年11月27日)参考答案

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share