当前位置:首页>python>【第42期】21天养成编程习惯:Python刷题第16天

【第42期】21天养成编程习惯:Python刷题第16天

  • 2026-09-09 02:45:49
【第42期】21天养成编程习惯:Python刷题第16天

跟老马一起“升级打怪”学编程!


Day16:GESP一级2023.06_累计相加

【提交】

https://www.luogu.com.cn/problem/B3839

【问题描述】

1、 累计相加,形如:

2、利用 input()语句输入一个大于 1 的正整数;

3、观察后一项与前一项的关系;

【输入描述】

1、输入一个大于 1 的正整数,假设输入合规,不考虑不合规情景,如带小数点的数, 负数等;

2、特别提示:常规程序中,输入时好习惯是有提示。考试时由于系统限定,输入时所 有 input()函数不可有提示信息。

【输出描述】

输出累计相加的结果。

【样例输入1】

3

【样例输出1】

10

【样例输入2】

4

【样例输出2】

20

【样例输入3】

10

【样例输出3】

220

参考程序:

'''[GESP202306 一级] 累计相加https://www.luogu.com.cn/problem/B3839'''N = int(input())allTnt = 0# 保存全部序列之和subTnt = 0# 保存子序列之和for i in range(1, N+1):    subTnt += i    allTnt += subTntprint(allTnt)

Day16:GESP二级2024.03_小杨的日字矩阵

【提交】

https://www.luogu.com.cn/problem/B3955

【问题描述】

小杨想要构造一个  的日字矩阵( 为奇数),具体来说,这个矩阵共有  行,每行  个字符,其中最左列、最右列都是 |,而第一行、最后一行、以及中间一行(即第  行)的第  个字符都是 -,其余所有字符都是半角小写字母 x。例如,一个  的日字矩阵如下:

|---||xxx||---||xxx||---|

请你帮小杨根据给定的  打印出对应的“日字矩阵”。

【输入描述】

一行一个整数 (,保证  为奇数)。

【输出描述】

输出对应的“日字矩阵”。

请严格按格式要求输出,不要擅自添加任何空格、标点、空行等任何符号。你应该恰好输出  行,每行除了换行符外恰好包含  个字符,这些字符要么是 -,要么是 |,要么是 x。你的输出必须和标准答案完全一致才能得分,请在提交前仔细检查。

【特别提醒】

在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。

【样例输入1】

5

【样例输出1】

|---||xxx||---||xxx||---|

【样例输入2】

7

【样例输出2】

|-----||xxxxx||xxxxx||-----||xxxxx||xxxxx||-----|

参考程序:

'''[GESP202403 二级] 小杨的日字矩阵https://www.luogu.com.cn/problem/B3955'''n = int(input())for i in range(n):    buf = ""for j in range(n):if j == 0or j == n - 1:            ch = "|"elif i == 0or i == n - 1or i == n // 2:            ch = "-"else:            ch = "x"        buf = buf + ch    print(buf)

Day16:GESP三级2024.06_寻找倍数

【提交】

https://www.luogu.com.cn/problem/B4004

【问题描述】

小杨有一个包含  个正整数的序列 ,他想知道是否存在  使得  是序列  中所有数的倍数。

【输入描述】

第一行包含一个正整数 ,代表测试用例组数。

接下来是  组测试用例。

对于每组测试用例,一共两行。其中,第一行包含一个正整数 ;第二行包含  个正整数,代表序列 。

【输出描述】

对于每组测试用例,如果存在  满足对于所有  是  的倍数,输出 Yes,否则输出 No。

【样例输入1】

231 2 451 2 3 4 5

【样例输出1】

YesNo

【样例解释】

对于第一组数据,对于 ,满足  是  和  的倍数。

【数据范围】

对于全部数据,保证有 ,,。

参考程序:

'''GESP:2024.06三级 寻找倍数https://www.luogu.com.cn/problem/B4004'''t = int(input())for _ in range(t):    n = int(input())    lst = list(map(int, input().split()))    max_ = max(lst)if sum([max_ % i for i in lst]) == 0:        print("Yes")else:        print("No")

Day16:GESP四级2026.06_扫雷

【提交】

https://www.luogu.com.cn/problem/B4557

【问题描述】

小杨同学正在游玩经典游戏「扫雷」,他想自己生成一个「扫雷」的地图。

小杨同学希望生成的地图大小为  行  列,一共  个区块。

区块行号为 ,列号为 。 其中一些区块为雷区,其它区块不为雷区。

小杨同学指定了  个区块为雷区,而其它区块均不为雷区。小杨同学希望你帮忙计算非雷区的区块,每个区块与多少个雷区相邻?

我们定义区块相邻,当且仅当两个区块至少有一个公共顶点(也就是说对于不在地图边缘的区块,周围  个区块均与其相邻)。

【输入描述】

输入包含  行。第一行,三个正整数 , 和 ,分别表示地图行数和列数,以及雷区数量。接下来的  行,每行有  个整数,分别表示第  个雷区的行号和列号。

保证输入的雷区不重复。

【输出描述】

输出  行,每行  个 字符(使用空格分割),对于第  行第  列,输出地图对应区块的信息:

  1. 如果为雷区,输出 *;
  2. 如果不是雷区,输出其相邻雷区数量(输出  到  中的一个数字)。

【样例输入1】

3 4 41 11 32 43 2

【样例输出1】

* 2 * 22 3 3 *1 * 2 1

【样例解释1】

根据输入,在  的地图上有  个雷区,分别是 ,, 和 ,如输出样例中 * 所示,其它非雷区区块的相邻雷区数量可以直观看出。

【数据范围】

。

输入的雷区必定在地图内且不重复,注意行号和列号均从  开始。

参考程序:

'''[GESP202606 四级] 扫雷https://www.luogu.com.cn/problem/B4557'''n, m, q = map(int, input().split())# 初始化:雷标记矩阵 + 计数矩阵(多一圈避免边界判断)lst = [[0for _ in range(m + 2)] for _ in range(n + 2)]for _ in range(q):    i, j = map(int, input().split())    lst[i][j] = '*'dx = [-1, -1, -1, +0, +0, +1, +1, +1]dy = [-1, +0, +1, -1, +1, -1, +0, +1]for i in range(1, n + 1):for j in range(1, m + 1):if lst[i][j] != "*":            cnt = 0for k in range(8):                x = i + dx[k]                y = j + dy[k]if lst[x][y] == "*":                    cnt += 1            lst[i][j] = cntfor i in range(1, n + 1):for j in range(1, m + 1):        print(lst[i][j], end=" ")    print()

青少年编程竞赛交流

「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),添加小助手微信,让他邀请大家进入学习群。进群之后大家可以参与定期组织的21天刷题打卡、等级考试测评、教育部白名单比赛辅导以及青少年编程组队竞赛等活动。

最新文章

随机文章