第十三届蓝桥杯大赛青少组——中级组python真题

第 1 题 单选题

下列关于函数的说法正确的是()。

A.函数的定义必须在程序的开头

B.函数定义后,其中的程序就可以自动执行

C.函数定义后需要调用才会执行

D.函数体与关键字def必须左对齐

 解析:python中函数定义在调用后才会执行,其他都错的,选C

        

第 2 题 单选题

十进制数55转换成十六进制是()。

A.110111

B.313

C.37

D.67

 解析:55%16=7,55//16=3  因此转换为16进制后为37选C        ,

第 3 题 单选题

下列方法中,哪一个可以随机生成一个实数()。

A.random()

B.randrange()

C.getrandbits()

D.randint()

解析:random() 产生一个(0,1)之间的实数,randrange()产生一个对应

区间的整数,getrandbits(k)产生一个不大于k位的整数,randint()产生一

个整数。选A

         

第 4 题 单选题

已知t=("lan”,“qiao”,“bei"),执行t[::-1]语句输出的结果是()。

A.("bei",“qiao',"lan")

B.[“bei”,“qiao",“lan"]

C.{"bei",“qiao",“lan"}

D.运行报错

解析:t[::-1]将元组中元素倒序,元组有3个字符串元素,因此选A

       

第 5 题 单选题

字符串的strip方法的作用是()。

A.删除字符串头尾指定的字符

B.删除字符串未尾的指定字符

C.删除字符串头部的指定字符

D.通过指定分隔符对字符串切片

解析:strip方法的知识考察,选A        

二、编程题

第1题 

题目描述

输入两个字符串s1和s2,然后将s1和s2拼接成一个字符串并输出。

例如:s1='ab',s2='cd',拼接成一个字符串为‘abcd'。

输入格式

第一行输入一个字符串s1

第二行输入一个字符串s2

输出格式

将s2拼接到s1的后边并输出

输入样例

ab

cd

输出样例

abcd

s1=input()
s2=input()
print(s1+s2)

第二题 

题目描述

给定一个正整数N,输出正整数N中各数位最大的那个数字,

例如:N=132,则输出3.

输入格式

输入一个正整数N

输出格式

输出正整数N中各数位最大的那个数字

输入样例

132

输出样例

3

解析:方法一:通过取余10的方法拆分数位,找出最大的;方法二:将数字转换成字符串,取字符串中最大的。

n=int(input())
print(max(str()))

第3题 

题目描述

小青带着一根长为80厘米的竹竿去摘苹果,当伸手够不到苹果会借助竹竿摘苹果(竹竿碰到苹果就算摘下)。在给定出小青伸手的高度N及每个苹果离地面的高度,请你帮助小青计算出最多能够摘到多少苹果。

例如:N=120,苹果高度分别为130,220,153,200,最多可以摘到3个苹果,高度为220的苹果即使使用竹竿也摘不到。

输入格式

第一行输入一个正整数N(120<=N<=200),表示小青伸手高度(单位:厘米)

第二行输入多个正整数,表示每个苹果距离地面的高度,正整数之间以一个英文逗号隔开(单位:厘米)

输出格式

输出一个整数,表示小青最多可以摘到的苹果数

输入样例

120

130,220,153,200

输出样例

3

l=int(input())+80
h=eval(input())
ans=0
for i in h:
    if i<=l:
        ans+=1
print(ans)

第4题 

题目描述

小马需要将N件物品从河的一岸搬运到河的另一岸,每次搬运的物品为1到3件。
请问小马将N件物品全部搬运过去有多少种方案。
例如:N=3,将3件物品全部搬运过去有4种方案:
方案一:第一次搬运1件,第二次搬运1件,第三次搬运1件:
方案二:第一次搬运1件,第二次搬运2件:
方案三:第一次搬运2件,第二次搬运1件:
方案四:一次搬运3件。

输入格式

输入一个正整数N,表示需要搬运的物品数

输出格式

输出将N件物品全部搬运过去有多少种方案

输入样例

3

输出样例

4

解析:一次可以搬1件,2件,3件,因此要搬k件可以有三类方法,先(k-1)然后1,或者先(k-2),然后2,或者先(k-3),然后3,用递推就可以了。

n=int(input())
a=[1,1,2]
for i in range(3,n+1):
    a[i]=a[i-1]+a[i-2]+a[i-3]
print(a[n])

第5题

题目描述

有一片海域划分为N*M个方格,具中有些海域已经被污梁(用0表示),有一些海域没被污染用1表示):
请问这片N*M海域中有几块是没被污染的独立海域(没被污染的独立海域是指该海域上下左右被已污染的海域包围,且N*M以外的海域都为已被污染的海域)
例如:N=4,M=5,4*5的海域中,已被污染海域和设被污染的海域如下图:
第十三届蓝桥杯大赛青少组——中级组python真题_第1张图片

 这块4*5的海域,有3块海域(绿色)没被污染,因为每一块的上下左右都被污染的的海域包围。

输入格式

第一行输入两个整数N和M,N表示矩阵方格的行,M表示矩阵方格的列,N和M之间以一个英文逗号隔开。

第二行开始输入N行,每行M个数字(数字只能为1或者0,1表示没被污染的海域,0表示已被污染的海域)。

输出格式

输出一个整数,表示N*M的海域中有几块是没被污染的独立海域。

解析:连通块模板题DFS解决。

def dfs(i,j):
    for o in range(4):
        x=i+dx[o]
        y=j+dy[o]
        if x>=0 and x=0 and y

 第6题

输入描述

第一行输入两个整数N和M(1≤N≤100,1≤M≤100),N表示矩阵的行数,M表示矩阵的列数,两个整数之间一个空格隔开

接下来输入N行,每行包括M个0或者1(0表示方格中没有奖品,1表示方格中有奖品),0或者1之间一个空格隔开

输出描述

输出一个整数,表示最多可获得的奖品数

样例输入

5 6

1 0 1 0 0 0

0 1 0 1 0 0

1 0 0 0 1 0

0 1 0 0 0 1

1 0 1 0 0 0

样例输出

4

解析:可以直接暴力,时间复杂度O(N*N*M*M)会超时,预处理二维前缀和,枚举一个起点,然后以这个起点找对角线,找到所有满足条件的对角线,每次找到一个终点,求这个矩形的数据和,如果数据和=正方形的边长,说明其他位置没有1,找到最大的答案即可,时间复杂度为O(N*M*N)。

n, m = (int(x) for x in input().split())
a = [[0 for x in range(m+1)]]
for i in range(n):
    b = [0] + [int(x) for x in input().split()]
    a.append(b)
# 预处理前缀和数组
s = [[0 for x in range(105)] for y in range(105)]
for i in range(1, n + 1):
    for j in range(1, m + 1):
        s[i][j] = s[i - 1][j] + s[i][j - 1] + a[i][j] - s[i - 1][j - 1]
def ss(c, d, e, f):
    # 求坐上角为cd,右下角为ef的正方形的数据和
    return s[e][f] - s[c - 1][f] - s[e][d - 1] + s[c - 1][d - 1]
def work(x, y):
    # 以(x,y)为上方,求解能找到的最大的答案
    # 往右下走t步
    t = 1
    kx = x + t
    ky = y + t
    while (kx <= n and ky <= m and a[kx][ky] == 1 and ss(x, y, kx, ky) == t + 1):
        t += 1
        kx = x + t
        ky = y + t
    res = t
    # 往左下走t步
    t = 1
    kx = x + t
    ky = y - t
    while (kx <= n and ky >= 1 and a[kx][ky] == 1 and ss(x, ky, kx, y) == t + 1):
        t += 1
        kx = x + t
        ky = y - t
    res = max(t,res)
    return res
ans=0
for i in range(1,n+1):
    for j in range(1,m+1):
        if a[i][j]==1:
            if work(i,j)>ans:
                ans=work(i,j)
print(ans)

以上参考的微信公众号:JOY的课堂

你可能感兴趣的:(蓝桥杯,蓝桥杯,python,算法)