yanchang
yanchang
发布于 2025-04-12 / 16 阅读
0
0

蓝桥杯python B组个人考场答案总分62左右

试题 A: 攻击次数(5)

0002.jpg

答案

blod=2025
N=0
while blod>0:
    N+=1
    delb=0
    delb+=5
    if(N%2):
        delb+=15
    else:
        delb+=2
    tag=N%3
    if(tag==1):
        delb+=2
    elif(tag==2):
        delb+=10
    elif(tag==0):
        delb+=7
    blod-=delb
print(N)

试题 B: 最长字符串(0)

0003.jpg

答案

from collections import defaultdict

# 读取单词并按长度排序
words = []
with open("words.txt", "r") as f:
    words = [line.strip() for line in f.readlines()]
words.sort(key=lambda x: (len(x), x))  # 按长度和字典序排序

# 动态规划字典:key是排序后的字符元组,value是(最短字典序字符串, 长度)
dp = defaultdict(tuple)
max_len = 0
result = ""

for word in words:
    n = len(word)
    sorted_chars = tuple(sorted(word))
    
    if n == 1:
        # 长度为1的字符串一定是优美的
        if sorted_chars not in dp or word < dp[sorted_chars][0]:
            dp[sorted_chars] = (word, 1)
        if 1 > max_len or (1 == max_len and word < result):
            max_len = 1
            result = word
    else:
        # 检查前n-1字符的排序元组是否存在于dp中
        prefix = tuple(sorted(word[:-1]))
        if prefix in dp:
            # 当前单词是优美字符串
            current_str = word
            current_sorted = sorted_chars
            current_len = n
            
            # 更新dp:如果当前组合未记录或字典序更小
            if current_sorted not in dp or current_len > dp[current_sorted][1] or (current_len == dp[current_sorted][1] and current_str < dp[current_sorted][0]):
                dp[current_sorted] = (current_str, current_len)
            
            # 更新最终结果
            if current_len > max_len or (current_len == max_len and current_str < result):
                max_len = current_len
                result = current_str

print(result)

试题 C: LQ 图形(10)

0004.jpg

0005.jpg

答案

w,h,v=map(int,input().split())
for i in range(h):
    print("Q"*w)
for i in range(w):
    print("Q"*(w+v))

试题 D: 最多次数(10)

0006.jpg

答案

strD=input()
ls=["lqb","lbq","qlb","qbl","blq","bql"]
ls=set(ls)
N=len(strD)
sums=0
if(N<3):
    sums=0
else:
    l=0;r=3
    while(r<N):
        if(strD[l:r] in ls):
            sums+=1
            l=r
            r=l+3
        else:
            l+=1
            r+=1
print(sums)

试题 E: A· B Problem(8)

0007.jpg0008.jpg

答案

L=int(input())
sums=0
for i in range(1,L+1):
    for j in range(1,L+1):
        for f in range(1,L//i+1):
            for e in range(1,L//j+1):
                if(i*f+j*e)<=L:
                    sums+=1
print(sums)

试题 F: 园艺(3)

0009.jpg0010.jpg

答案

def isok(ls):
    m=-1
    for i in ls:
        if i>m:
            m=i
        else:
            return 0
    return 1

N=int(input())
ls=list(map(int,input().split()))
le=1;ok=0
while le<N-1 and ok==0:
    l=0
    while l<le:
        nowls = ls[l::le]
        if (isok(nowls)):
            re = len(nowls)
            print(re)
            ok=1
            break
        else:
            l += 1
    le+=1
if(N==0):
    print(0)
elif(ok==0):
    print(1)

试题 G: 书架还原(20)

0011.jpg0012.jpg

答案

n=int(input())
ls=list(map(int,input().split()))
i=0
sums=0
while i<n:
    while(ls[i]!=i+1):
        m=ls[ls[i]-1]
        ls[ls[i] - 1]=ls[i]
        ls[i]=m
        sums+=1
        pass
    i+=1
print(sums)

试题 H: 异或和(8)

0013.jpg0014.jpg

答案

n=int(input())
a=list(map(int,input().split()))
sums=0
for i in range(n):
    for j in range(i+1,n):
        ad=j-i
        ad*=a[i]^a[j]
        sums+=ad
print(sums)


评论