计蒜客蓝桥杯训练营练习题python代码 一、快速提升代码能力

一、快速提升代码能力

1. a+b问题

t = int(input())
for i in range(t):
    nums = input().split(' ')
    a = int(nums[0])
    b = int(nums[1])
    print(a+b)
    

2. 斐波那契数列

import sys
n = int(input())
a = 1
b = 1
if n < 2:
    print(1)
    sys.exit()
for i in range(n-2):
    c = a+b
    a = b
    b = c
print(c%1000000007)


3. 矩阵旋转

args = input().split(' ')
n = int(args[0])
m = int(args[1])
A = []
for i in range(0,n):
    nums = list(map(int,input().split(' ')))
    A.append(nums)
    
for j in range(0,m):
    for i in range(n-1,0,-1):
        print(A[i][j],end=' ')
    print(A[0][j])

4. 最大子阵

line = input().rstrip().split(' ')
n = int(line[0])
m = int(line[1])
A = []
for i in range(0,n):
    line = input().rstrip().split(' ')
    nums = list(map(int,line))
    A.append(nums)

ans=-10000
for top in range(0, n):
    for bottom in range(top,n):
        for left in range(0,m):
            for right in range(left,m):
                temp=0
                for ln in range(top, bottom+1):
                    for col in range(left,right+1):
                        # print(top, bottom,left,right,ln,col,)
                        temp+=A[ln][col]
                if temp>ans:
                    ans=temp
print(ans)

5. 蒜头君的随机数

A=[0]
for i in range(0,1005):
    A.append(0)

n = int(input())
line = input().rstrip()
nums = list(map(int, line.split(' ')))
for i in nums:
    A[i]=1

res=[]
for i in range(0, 1005):
    if A[i]==1:
        res.append(i)
        
print(len(res))
for i in range(0,len(res)-1):
    print(res[i],end=' ')
print(res[len(res)-1])

6. 交叉排序

line = input().rstrip()
nums = list(map(int, line.split(' ')))
N=nums[0]
l1=nums[1]
r1=nums[2]
l2=nums[3]
r2=nums[4]

A=[0]
line = input().rstrip()
nums = list(map(int, line.split(' ')))
for i in nums:
    A.append(i)
A[l1:r1+1]=sorted(A[l1:r1+1])
A[l2:r2+1]=sorted(A[l2:r2+1],reverse=True)

print(' '.join(list(map(str,A[1:]))))

7. 进制转换

import sys
line = input().rstrip()
nums = list(map(int, line.split(' ')))
N=nums[0]
R=nums[1]
tag=0
res=[]
if N<0:
    N=-N
    tag=1
if N==0:
    print(0)
    sys.exit()
    
while(N):
    if N%R>=10:
        res.append(chr(ord('A')+N%R-10))
    else:
        res.append(N%R)
    N=int(N/R)
    
if tag==1:
    print('-',end='')
print(''.join(reversed(list(map(str,res)))))

8. 回文数

# 检查是否为回文数,是返回True,不是返回False
def check(n):
    str1=str(n)
    str2=''.join(list(reversed(str1)))
    if str1!=str2:
        return False
    return True

# 交换高低位
def swap(n):
    return int(''.join((list(reversed(str(n))))))

line = input().rstrip()
nums = list(map(int, line.split(' ')))
n=nums[0]
record=[]
ctr=0
while not(check(n)):
    ctr+=1
    record.append(n)
    n+=swap(n)
    
record.append(n)
print(ctr)
print('--->'.join(list(map(str,record))))

9. 机器人走路

import sys
x=0
y=0
lastdir=(1,0)   # (1,0) x轴正向
nowdir=lastdir
def forward(step):
    global nowdir
    nowdir=lastdir
    run(step)
    
def back(step):
    global nowdir
    nowdir=(lastdir[0]*(-1),lastdir[1]*(-1))
    run(step)
    
def left(step):
    leftNextDir={(1,0):(0,1),(0,1):(-1,0),(-1,0):(0,-1),(0,-1):(1,0)}
    global nowdir
    nowdir=leftNextDir[lastdir]
    run(step)
    
def right(step):
    rightNextDir={(1,0):(0,-1),(0,-1):(-1,0),(-1,0):(0,1),(0,1):(1,0)}
    global nowdir
    nowdir=rightNextDir[lastdir]
    run(step)
    
def run(step):
    global x
    global y
    global lastdir
    x+=nowdir[0]*step
    y+=nowdir[1]*step
    lastdir=nowdir
    # print(nowdir)

n=int(input())
orders=[]
for i in range(n):
    orders.append(input().rstrip())


for o in orders:
    direct,step=o.split(' ')
    step=int(step)
    if direct=='forward':
        forward(step)
    elif direct=='back':
        back(step)
    elif direct=='left':
        left(step)
    elif direct=='right':
        right(step)
    else:
        print('error')
        sys.exit()
print(x,y)

发布了8 篇原创文章 · 获赞 0 · 访问量 34

猜你喜欢

转载自blog.csdn.net/weixin_43755257/article/details/105183707