今天用python写了写第十届蓝桥杯的题,有几个题感觉自己用的方法不是太好,另外最后的那个题目还不会写,希望有人改善、告知。
试题A:组队(5分)
【问题描述】
作为篮球队教练,你需要从以下名单中选出1 号位至5 号位各一名球员,组成球队的首发阵容。
每位球员担任1 号位至5 号位时的评分如下表所示。请你计算首发阵容1号位至5 号位的评分之和最大可能是多少?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
取每个位置分数最高的,注意:一个位置只能一个人,同时一个人也只能在一个位置
答案:490
试题B: 年号字串(5分)
【问题描述】
小明用字母A 对应数字1,B 对应2,以此类推,用Z 对应26。对于27以上的数字,小明用两位或更长位的字符串来对应,例如AA 对应27,AB 对应28,AZ 对应52,LQ 对应329。请问2019 对应的字符串是什么?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个大写英文字符串,在提交答案时只填写这个字符串,注意全部大写,填写多余的内容将无法得分。
我看到这道题的时候,我第一时间想的是26进制,这道题也就相当于进制转换。
from string import ascii_uppercase
a = 2019
al = list(ascii_uppercase)
nu = [i + 1 for i in range(26)]
l = []
while a % 26 != 0:
l.insert(0,a%26)
a = a // 26
for i in range(len(l)):
l[i] = al[l[i] - 1]
print(''.join(l))
答案:BYQ
试题C: 数列求值(10分)
【问题描述】
给定数列1, 1, 1, 3, 5, 9, 17, …,从第4 项开始,每项都是前3 项的和。求第20190324 项的最后4 位数字。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个4 位整数(提示:答案的千位不为0),在提交答案时只填写这个整数,填写多余的内容将无法得分。
这道题的解答我在另一篇文章里写过,就不在这里再写了。文章如下:嗯嗯:用python解决第十届蓝桥杯大赛软件类省赛C/C++大学A组赛题(上)zhuanlan.zhihu.com
答案:4659
试题D: 数的分解(10分)
【问题描述】
把2019 分解成3 个各不相同的正整数之和,并且要求每个正整数都不包含数字2 和4,一共有多少种不同的分解方法?注意交换3 个整数的顺序被视为同一种方法,例如1000+1001+18 和1001+1000+18 被视为同一种。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
由于3个整数的不同顺序是同一种方法,所以我就只取数字从小到大的方法,感觉这种不是最好的方法:
n = 2019
c = 0
def check(x):
while x != 0:
a = x % 10
if a == 2 or a == 4:
return False
x = x // 10
return True
for i in range(1,674):
for j in range(i+1,(2020-i)//2):
if check(i) and check(j) and check(2019-i-j):
c = c+1
print(c)
试题E: 迷宫(15分)
【问题描述】
下图