第十四届蓝桥杯模拟赛(Python)

写在前面

本篇题解涵盖范围为1 - 8 题,最后两题本人没能解出来 使用语言为Python 过样例 不确定能否AC 仅供参考 若有错误 欢迎指出 最后两题若有佬会 可以评论给出你的思路 感激不尽 🙏

# 直接调用转二进制函数即可
# 具体用法请查官方文档

s = 2022
ans = bin(s)
print(len(ans[2:]))

调用datetime函数,枚举每一天并判断是否符合要求
import datetime

start = datetime.date(2022,1,1)
ans = 0 
diff = datetime.timedelta(1)
end = datetime.date(2022,12,31)

def check(date) :
    
    if datetime.date.weekday(date) == 5 or datetime.date.weekday(date) == 6 :
        return True
    date = str(date)
    if date[-2:] == 01 or date[-2:] == 11 or date[-2:] == 21 or date[-2:] == 31 :
        return True
    return False

while start <= end :
    if check(start) : ans += 1
    start += diff
    
print(ans)

简单模拟,大于12时输出答案
idx = 1 
target = 12 
tot = 0 
ans = 0

while tot < target :
    tot += 1 / idx 
    ans += 1 
    idx += 1
    
print(ans)

遍历每个点,判断是否为山谷即可

二位前缀和,枚举起点和终点的横坐标和列坐标即可
Map = [[0] * 101 for i in range(101)]

Map[1][1] = 1 
for i in range(1,101) :
    for j in range(1,101) :
        if i == 1 and j == 1 : continue
        if j == 1 : Map[i][j] = Map[i-1][j] + 1 
        else : Map[i][j] = Map[i][j-1] + 2 
        
for i in range(1,101) :
    for j in range(1,101) :
        Map[i][j] += Map[i-1][j] + Map[i][j-1] - Map[i-1][j-1] 
        
print(Map[3][3])
        
ans = float(inf)

for i in range(1,101) :
    for j in range(i,101) :
        for k in range(1,101) :
            for t in range(k,101) :
                if Map[j][t] - Map[j][k-1] - Map[i-1][t] + Map[i-1][k-1] == 2022 :
                    ans = min(ans,(j-i+1)*(t-k+1))
                    
print(ans)

模拟 , 签到题
s = int(input())
t = int(input())

ans = 0 
if t > s : print(t - s)
else : print(t + 7 - s)

直接调用replace函数
s = input()
s = s.replace(a, A)
s = s.replace(e, E)
s = s.replace(i, I)
s = s.replace(o, O)
s = s.replace(u, U)

print(s)

按照输入的顺序,当前的时间-上一个时间✖️电流✖️电压,计算总和
n = int(input())
ans = 0

for i in range(n) :
    s,U,I = input().split()
    H,M,S = s.split(:)
    if i == 0 :
        oldU = int(U) ; oldI = int(I)
        oldH = int(H) ; oldM = int(M) ; oldS = int(S)
    else :
        ans += ((int(H) - oldH) * 3600 + (int(M) - oldM) * 60 + (int(S) - oldS)) * oldU * oldI
        oldU = int(U) ; oldI = int(I)
        oldH = int(H) ; oldM = int(M) ; oldS = int(S)
        
print(ans)

# 没有思路

# 没有思路
经验分享 程序员 微信小程序 职场和发展