蓝桥杯----历届试题
提示:以下是本篇文章正文内容,下面案例可供参考
一、试题 历届真题 杨辉三角形【第十二届】【省赛】【C组】
问题
代码解析
我的代码,显示内存超限,但结果可行
listA = []
listC = []
N = int(input())
for i in range(N + 1):
listB = []
if i == 0:
listB = [1]
elif i == 1:
listB = [1, 1]
else:
for j in range(i + 1):
if j == 0 or j == i:
listB.append(1)
else:
listB.append(listA[i - 1][j] + listA[i - 1][j - 1])
listC.extend(listB)
listA.append(listB)
print(int(listC.index(N)) + 1)
第二次写依旧内存超限
# 杨辉三角形
N = int(input())
list1 = [1]
list2 = [1]
list3 = []
for i in range(0, N):
for j in range(len(list1)):
# print(list1[j], end=" ")
if j != 0:
list2.append(list1[j - 1] + list1[j])
# print()
list3.extend(list1)
list2.append(1)
list1 = list2
list2 = [1]
# print(list3)
print(int(list3.index(N)) + 1)
第三次写,运行超时
N = int(input())
dp = []
lis = []
for i in range(1, N + 1):
dp.append([1]*i)
if i == 1 or i == 2:
lis.extend(dp[i - 1])
else:
for i in range(2, len(dp)):
for j in range(1, len(dp[i]) - 1):
if j != 0 and j != len(dp[i]) - 1:
dp[i][j] = dp[i - 1][j] + dp[i - 1][j - 1]
lis.extend(dp[i])
print(lis.index(N)+1)
第四种
N = int(input())
dp = []
lis = []
for i in range(0, 10):
dp.append([1] * (i + 1))
if i == 0 or i == 1:
lis.extend(dp[i])
else:
for i in range(2, len(dp)):
for j in range(1, len(dp[i]) - 1):
if j != 0 and j != len(dp[i]) - 1:
dp[i][j] = dp[i - 1][j] + dp[i - 1][j - 1]
lis.extend(dp[i])
print(lis.index(N) + 1)
第五种
N = int(input())
dp = []
t = 0
for i in range(1, 11):
dp.append([1] * i)
for i in range(2, len(dp)):
for j in range(1, len(dp[i]) - 1):
if j != 0 and j != len(dp[i]) - 1:
dp[i][j] = dp[i - 1][j] + dp[i - 1][j - 1]
# print(dp)
for m in dp:
t = t + len(m)
# print(m)
# print(t)
if N in m:
t = t + m.index(N) + 1 - len(m)
break
else:
continue
print(t)
这五种,在运行过程中,前三种除了特殊值2有误
后两种,都是可以运行的
但在蓝桥杯测试中显示各种不同错误
希望大神们能帮我看看救命呀!!!!!!!!!!!!
二、时间显示
问题
代码解析
n = int(input())
n = n // 1000
ss = n % 60
n = n // 60
mm = n % 60
n = n // 60
hh = n % 24
print("%.2d:%.2d:%.2d" % (hh, mm, ss))
三、双向排序
问题
代码解析
n,T=list(map(int,input().split()))
data=list(range(1,n+1)) #数据1-n
for i in range(T): #循环T次
p,q=list(map(int,input().split()))
if p==0:
data[:q]=sorted(data[:q],reverse=True)
elif p==1:
data[q-1:]=sorted(data[q-1:],reverse=False)
print(*data)
s = input()
n, m = int(s.split()[0]), int(s.split()[1])
num = [i for i in range(1, n+1)]
flag = [0 for _ in range(m)]
do = [0 for _ in range(m)]
for i in range(m):
s = input()
p, q = int(s.split()[0]), int(s.split()[1])
flag[i] = p
do[i] = q
for i in range(m):
if flag[i] == 0:
num = sorted(num[:do[i]], reverse=True)+num[do[i]:]
else:
num = num[:do[i]-1]+sorted(num[do[i]-1:])
output = ""
for i in num:
output += str(i)
output += ' '
print(output)