第14届蓝桥杯Python青少组中/高级选拔赛(STEMA)2022年11月真题

第14届蓝桥杯Python青少组中/高级选拔赛(STEMA)2022年11月真题

题目一、增加10
题目描述
(注input()输入函数的括号中不允许添加任何信息)

输入一个整数N (-100<N<100),输出N+10的结果。 例如: N=5,5+10的结果为15(15=5+10)

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

输出

输出一个整数,表示N+10的结果
样例输入
5
样例输出
15
【参考答案】

n = int(input())
print(n+10)

题目二、统计字符个数
题目描述
第二题 (注input()输入函数的括号中不允许添加任何信息)

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

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

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

样例输入
ab!a
样例输出
2
【知识点】: 字符串的count()方法
【参考答案】

s = input()
print(s.count('a'))

题目三、巧分胡萝卜
题目描述
第三题 (注input()输入函数的括号中不允许添加任何信息

现将N(3≤N<600)根胡萝卜全部分配给黑、白、灰三只兔子

分配规则如下:

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

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

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

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

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

在这里插入图片描述

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

输出
输出一个整数,表示将N根胡萝卜全部分配给三只兔子,共有多少种不同的分配方法
样例输入
8
样例输出
5
【解法一】 枚举
规则:黑>=白>=灰>0
思路:双层循环,i是黑兔子的胡萝卜数量,j是白兔子的胡萝卜数量,n-i-j是灰兔子的胡萝卜数量
【参考答案】

n = int(input())

s = 0

for i in range(n+1):
    for j in range(n+1):
        if i>=j and j>=n-i-j and n-i-j>0:#判断分配方法是否符合要求
            s += 1
print(s)

题目四、业务办理时间
题目描述
某服务大厅同时开放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
【思路】 模拟排队的过程,需要遍历排队的人
找到目前用时窗口的最少用时时间,最少用时时间相同的话,还找到需要序号最小的窗口。将第i个人需要的时间累加到当前窗口。

【参考答案】

n = int(input())
l = [int(x) for x in input().split(' ')]
a = [0,0,0]

for i in l:
    m = min(a) #目前用时窗口的最少用时时间
    index = a.index(m) #最少用时时间,且序号最小的窗口序号最小的窗口
    a[index] += i
print(min(a))

题目五:
在这里插入图片描述

【思路】
从n出发到m,每次可以走1步或2步,路线就是不同走法的组合
n = 3, m = 7
组合1:3+2+2 = 7
组合2:3+2+1+1 = 7
组合3:3+1+2+1 = 7
组合4:3+1+1+2 = 7
组合5:3+1+1+1+1 = 7
【参考答案】

n,m = [int(x) for x in input().split()]
s = 0 #路线总数
def search(n,cur):
    global s
    if cur==m: #累加和等于m
        s += 1
        return
    elif cur>m: #累加和大于m,组合无效
        return
    else:
        search(n,cur+2)
        search(n,cur+1)

search(n,n)
print(s)
        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值