蓝桥杯青少组STEMA测评(2022年1月)Python编程题解


代码:

· 

· 

N = int(input())print(N//3)

解说:运算符(/)得到的是浮点数,运算符(//)得到的是整数的商。

代码:

· 

· 

· 

N = int(input())sp = ['A','B','C','D']print(sp[N-1])

解说:列表编号是从0开始的。

代码:

· 

· 

· 

· 

· 

· 

· 

N = int(input())M = N*Nw=len(str(N))  #位数if M % 10**w == N:    print('Y')else:    print('N')

解说:N后的整数,后面同样多位的0。
代码:

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

lst = list(map(int, input().split(',')))n = int(input())nums = []for i in lst:  #过滤掉大于等于目标的数    if i < n:        nums.append(i)rst = -1m = len(nums)if m > 1:    for i in range(m-1):  #两数组合的双重循环        for j in range(i,m):            h = nums[i] + nums[j]            if h <= n and h > rst:                rst = hprint(rst)

解说:首先过滤掉大于等于目标的数,两数组合的双重循环进行检测。
分析:这里主要问题是如何组合商品,使它们能装下书包。这是小孩都能轻而易举的完成的事,但要编程解决却不容易。假如选第一个,那么第二个就有n-1个可选方案,如此类推,直到不可增加为止,这实际是一棵树。然后是不含第一个的方案,除去第一个,那么第二个就变成第一个了,组合的逻辑没有区别。总体的选择就构成了一个森林。以M=15, N=5,四个体积是3,7,6,2,5为例,绘制森林图如下:

 

假设它们的价值分别是:5,3,2,1,4,它们的价值累加如下:5+3+1=9
5+3+4=125+2+1=85+2+4=115+1+4=10
3+2+1=6
3+1+4=8
3  +  4=72  +  1=3
2  +  4=6
1  +  4=5
得最大值为12。
代码:

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

· 

m, n = map(int,input().split(','))vs =  map(int,input().split(','))ps =  map(int,input().split(','))vps = list(zip(vs,ps))  #构造体积、价值对列表mv=0  #最大值def find(sv, sp, lvps):    '''@sv 体积累加  @sp 价值累加  @lvps pop后剩余的列表'''    global mv    for i in range(len(lvps)):        nlvps = lvps.copy()  #浅拷贝        v, p = nlvps.pop(i)  #弹出第i个元素        nsv = sv + v  #累加体积        if nsv <= m:  #累加体积没超过书包容积           nsp = sp + p  #累加价值           if nsp > mv:  #比较最大值               mv = nsp           if nsv < m:   #如果体积小于容积,递归调用               find(nsv, nsp, nlvps)find(0,0,vps)print(mv)