计蒜客 快速提升代码能力 python题解

23 篇文章 1 订阅
12 篇文章 19 订阅

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)


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值