計蒜客 快速提升代碼能力 python題解

2020 python 藍橋杯 計蒜客習題解答

鑑於python的題解沒有,故分享給大家,方便準備此次藍橋杯python組

第一部分 《快速提升代碼能力》

1.a + b 問題

mark

代碼:

N = int(input())
for i in range(N):
    a, b = list(map(int, input().split()))
    print(a + b)

2.斐波那契數列

mark

代碼:

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.矩陣旋轉

mark

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.最大子陣

mark

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.蒜頭君的隨機數

mark

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.交叉排序

這個題解我故意寫的複雜了一些,大家自己想想更簡單的方式吧,哈哈。

mark

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.進制轉換

mark

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.迴文數

mark

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)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章