试题 A: 攻击次数(5)

答案
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)

答案
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)


答案
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)

答案
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)


答案
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)


答案
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)


答案
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)


答案
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)