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)