2020 python 蓝桥杯 计蒜客习题解答
鉴于python的题解没有,故分享给大家,方便准备此次蓝桥杯python组
第一部分 《快速提升代码能力》
1.a + b 问题
代码:
N = int(input())
for i in range(N):
a, b = list(map(int, input().split()))
print(a + b)
2.斐波那契数列
代码:
n = int(input())
ls = [1, 1]
mod = int(1e9 + 7)
for i in range(3, n+1):
ls.append((ls[-1] + ls[-2]) % mod)
print(ls[n-1])
3.矩阵旋转
python代码:
n, m = input().split()
n = int(n)
m = int(m)
nums = []
for i in range(n):
nums.append(input().split())
for j in range(m):
for i in range(n):
if i != n-1:
print(nums[n-1-i][j], end=" ")
else:
print(nums[n-1-i][j])
4.最大子阵
python代码:
n, m = input().split()
n = int(n)
m = int(m)
ls = list()
res = int(-1000*2500)
for i in range(n):
ls.append(list(map(int, input().split())))
for up in range(0, n):
for down in range(up, n):
for left in range(0,m):
for right in range(left, m):
sum = 0
for i in range(up, down + 1):
for j in range(left, right + 1):
sum += ls[i][j]
res = max(res, sum)
print(res)
5.蒜头君的随机数
python代码
n = int(input())
nums = input().split()
nums = list(map(int,list(set(nums))))
nums.sort()
print(len(nums))
for i in range(len(nums)):
if i != len(nums) - 1:
print(nums[i], end=" ")
else:
print(nums[i], end="")
6.交叉排序
这个题解我故意写的复杂了一些,大家自己想想更简单的方式吧,哈哈。
python代码:
N, l1, r1, l2, r2 = list(map(int, input().split()))
ls = list(map(int, input().split()))
def sort_index(lis, l, r, flag):
temp = lis.copy()
temp = temp[l-1:r]
temp.sort(reverse=flag)
return lis[0:l-1] + temp + lis[r:]
ls1 = sort_index(ls, l1, r1, False)
ls2 = sort_index(ls1, l2, r2, True)
for i in ls2:
if i != ls[-1]:
print(i, end=" ")
else:
print(i)
7.进制转换
python代码:
N, R = list(map(int,input().split()))
res = ""
if N < 0:
print("-",end="")
N = -N
while True:
a,b = divmod(N, R)
if b == 10:
b = "A"
elif b == 11:
b = "B"
elif b == 12:
b = "C"
elif b == 13:
b = "D"
elif b == 14:
b = "E"
elif b == 15:
b = "F"
res = str(b) + res
if a == 0:
break
N = a
print(res)
8.回文数
python代码:
n = int(input())
ls = [n]
count = 0 # 变换的次数
while str(n) != str(n)[::-1]:
temp = int(str(n)[::-1])
n = temp + n
ls.append(n)
count += 1
print(count)
for i in ls:
if i != ls[-1]:
print(str(i) + "--->",end="")
else:
print(i)
:
temp = int(str(n)[::-1])
n = temp + n
ls.append(n)
count += 1
print(count)
for i in ls:
if i != ls[-1]:
print(str(i) + “—>”,end="")
else:
print(i)