十三届蓝桥青少组省赛Python-20220423

1、下列关于函数的说法正确的是(C)。
*选择题严禁使用程序验证,选择题不答和答错不扣分
A、函数的定义必须在程序的开头
B、函数定义后,其中的程序就可以自动执行
C、函数定义后需要调用才会执行
D、函数体与关键字de必须左对齐

2、十进制数55转换成十六进制是(C)。
*选择题严禁使用程序验证,选择题不答和答错不扣分
A、110111
B、313
C、37
D、67

3、下列方法中,哪一个可以随机生成一个实数(A)。
*选择题严禁使用程序验证,选择题不答和答错不扣分
A、random()
B、randrange()
C、getrandbits()
D、randint()

4、已知t=("lan”,“qiao”,“bei"),执行t[::-1]语句输出的结果是(A)。
*选择题严禁使用程序验证,选择题不答和答错不扣分
A、("bei",“qiao',"lan")
B、[“bei”,“qiao",“lan"]
C、{"bei",“qiao",“lan"}
D、运行报错

5、字符串的strip方法的作用是(A)。
*选择题严禁使用程序验证,选择题不答和答错不扣分
A、删除字符串头尾指定的字符
B、删除字符串未尾的指定字符
C、删除字符串头部的指定字符
D、通过指定分隔符对字符串切片

220423PC01
时间限制:3000MS
内存限制:589824KB
题目描述:
(注input()输入函数的括号中不允许添加任何信息)
编程实现:
输入两个字符串S1和S2,然后将S1和S2拼接成一个字符串并输出。
例如:S1=“ab",S2=“cd”,拼接成一个字符串为
“abcd”。
输入描述
第一行输入一个字符串S1
第二行输入一个字符串S2
输出描述
将S1和S2拼接成一个字符串并输出

print(input()+input())

220423PC02
时间限制:3000MS
内存限制:589824KB
题目描述:
(注input()输入函数的括号中不允许添加任何信息)
编程实现:
给定一个正整数N,输出正整数N中各数位最大的那个数字。
例如:N=132,则输出3。
输入描述
输入一个正整数N
输出描述
输出正整数N中各数位最大的那个数字

print(sorted(list(input()))[-1])

220423PC03
时间限制:3000MS
内存限制:589824KB
题目描述:
(注input()输入函数的括号中不允许添加任何信息)
编程实现:
小青带着一根长为80厘米的竹竿去摘苹果,当伸手碰不到的苹果会借助竹竿摘苹果(竹竿碰到苹果就算摘下)。
在给出小青伸手的高度N及每个苹果离地面的高度,请你帮助小青计算出最多能够摘到多少个苹果。
例如:N=120,苹果高度分别为130,220,153,200,最多可以摘到3个苹果,高度为220的苹果即使用竹竿也摘不到。
输入描述
第一行输入一个正整数N(120≤N≤200),表示小青伸手高度(单位:厘米)
第二行输入多个正整数,表示每个苹果距离地面的高度,正整数之间以一个英文逗号隔开(单位:厘米)
输出描述
输出一个整数,表示小青最多可以摘到的苹果数
样例输入
120
130,220,153,200
样例输出
3

h = int(input())
ls = list(map(int, input().split(',')))
ls1 = [i for i in ls if i <= h + 80]
print(len(ls1))

 220423PC04
时间限制:3000MS
内存限制:589824KB
题目描述:
(注input()输入函数的括号中不允许添加任何信息)
编程实现:
小马需要将N件物品从河的一岸搬运到河的另一岸,每次搬运的物品为1到3件。请问小马将N件物品全部搬运过去有多少种方案。
例如:N=3,将3件物品全部搬运过去有4种方案:
方案一:第一次搬运1件,第二次搬运1件,第三次搬运1件;
方案二:第一次搬运1件,第二次搬运2件;
方案三:第一次搬运2件,第二次搬运1件;
方案四:一次搬运3件。
输入描述
输入一个正整数N,表示需要搬运的物品数输出描述
输出将N件物品全部搬运过去有多少种方案
样例输入
3
样例输出
4

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

220423P05
时间限制:3000MS
内存限制:589824KB
题目描述:
(注input()输入函数的括号中不允许添加任何信息)
编程实现:
有一片海域划分为N*M个方格,其中有些海域已被污染(用0表示),有些海域没被污染(用1表示)。请问这片N*M海域中有几块是没被污染的独立海域(没被污染的独立海域是指该块海域上下左右被已污染的海域包围,且N*M以外的海域都为已被污染的海域)例如:N=4,M=5,4*5的海域中,已被污染海域和没被污染的海域如下图:

十三届蓝桥青少组省赛Python-20220423_第1张图片
这块4*5的海域,有3块海域(绿色)没被污染,因为每一块的上下左右都被污染的海域包围。
输入描述
第一行输入两个正整数N和M,N表示矩阵方格的行,M表示矩阵方格的列,N和M之间以一个英文逗号隔开
第二行开始输入N行,每行M个数字(数字只能为1或者0,1表示没被污染的海域,0表示已被污染的海域)
输出描述
输出一个整数,表示N*M的海域中有几块是没被污染的独立海域

 

n, m = map(int, input().split(','))
ls = []
for i in range(n):
    ls.append(list(map(int, input().split(','))))


def dfs(ls, i, j):
    if (not 0 <= i < n) or (not 0 <= j < m) or ls[i][j] == 0:
        return
    ls[i][j] = 0
    dfs(ls, i - 1, j)
    dfs(ls, i + 1, j)
    dfs(ls, i, j - 1)
    dfs(ls, i, j + 1)

ans = 0
for i in range(n):
    for j in range(m):
        if ls[i][j] == 1:
            ans += 1
            dfs(ls, i, j)

print(ans)

220423PG06
时间限制:3000MS
内存限制:589824KB
题目描述:
(注.input()输入函数的括号中不允许添加任何信息)
编程实现:
有一个N*M的矩阵方格,其中有些方格中有奖品,有些方格中没有奖品。小蓝需要从N*M的矩阵中选择一个方形区域,如果所选的正方形区域的一条对角线方格中都有奖品,其他方格都没有奖品,就会获得所选区域中的所有奖品,否则不能获得奖品。
当给出N和M的值,及N*M的矩阵方格中摆放的奖品情况
例如:N=5,M=6,奖品情况如下:

十三届蓝桥青少组省赛Python-20220423_第2张图片
选择上图红色正方形区域,可以获得最多的4个奖品。
输入描述
第一行输入两个整数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

 

n, m = map(int, input().split(' '))
ls = []
for i in range(n):
    ls.append([int(i) for i in input()[::2]])

def SUM(ls, start_i, start_j, r, c):
    sum_ = 0
    for i in range(start_i, r + 1):
        sum_ += sum(ls[i][min(start_j, c):max(start_j, c) + 1])
    return sum_

def dfsR(ls, start_i, start_j, i, j):
    if i >= n or j >= m or ls[i][j] == 0:
        return 0
    elif SUM(ls, start_i, start_j, i, j) != i - start_i + 1:
        return 0
    else:
        return dfsR(ls, start_i, start_j, i + 1, j + 1) + 1

def dfsL(ls, start_i, start_j, i, j):
    if i >= n or j < 0 or ls[i][j] == 0:
        return 0
    elif SUM(ls, start_i, start_j, i, j) != i - start_i + 1:
        return 0
    else:
        return dfsL(ls, start_i, start_j, i + 1, j - 1) + 1

res = 0
for i in range(n):
    for j in range(m):
        if ls[i][j] == 1:
            start_i, start_j = i, j
            res_r = dfsR(ls, start_i, start_j, i, j)
            res_l = dfsL(ls, start_i, start_j, i, j)
            res = max(res_r, res_l, res)
print(res)

你可能感兴趣的:(Python,Class,python,算法,数据结构)