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

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

  • 2026-09-18 14:27:10
【第42期】21天养成编程习惯:Python刷题第02天

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


Day02:GESP一级2023.06_时间规划

【提交】

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

【问题描述】

小明在为自己规划学习时间。现在他想知道两个时刻之间有多少分钟,你能通过编程帮他做到吗?

【输入描述】

输入 4 行,第一行为开始时刻的小时,第二行为开始时刻的分钟,第三行为结束时刻的小时,第四行为结束时刻的分钟。输入保证两个时刻是同一天,开始时刻一定在结束时刻之前。时刻使用 24 小时制,即小时在 0 到 23 之间,分钟在 0 到 59 之间。

【输出描述】

输出一行,包含一个整数,从开始时刻到结束时刻之间有多少分钟。

【样例输入1】

9596

【样例输出1】

1

【样例输入2】

95100

【样例输出2】

55

参考程序:

'''[GESP202306 一级] 时间规划https://www.luogu.com.cn/problem/B3838'''h1 = int(input())m1 = int(input())h2 = int(input())m2 = int(input())print(h2 * 60 + m2 - h1 * 60 - m1)

Day02:GESP二级2025.09_菱形

【提交】

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

【问题描述】

小 A 想绘制一个菱形。具体来说,需要绘制的菱形是一个  行  列的字符画, 是一个大于  的奇数。菱形的四个顶点依次位于第  行、第  列、第  行、第  列的正中间,使用 # 绘制。相邻顶点之间也用 # 连接。其余位置都是 .。例如,一个  行  列的菱形字符画是这样的:

..#...#.#.#...#.#.#...#..

给定 ,请你帮小 A 绘制对应的菱形。

【输入描述】

一行,一个正整数 。

【输出描述】

输出共  行,表示对应的菱形。

【样例输入1】

3

【样例输出1】

.#.#.#.#.

【样例输入2】

9

【样例输出2】

....#.......#.#.....#...#...#.....#.#.......#.#.....#...#...#.....#.#.......#....

【数据范围】

对于所有测试点,保证  并且  为奇数。

参考程序:

'''[GESP202509 二级] 菱形https://www.luogu.com.cn/problem/B4412'''n = int(input())center_x, center_y = n // 2, n // 2for i in range(n):for j in range(n):if abs(i - center_x) + abs(j - center_y) == n // 2:            print("#", end='')else:            print(".", end='')    print()

Day02:GESP三级2024.12_数字替换

【提交】

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

【问题描述】

小杨有一个包含  个数字的序列 ,即 ,他想将其中大于  的数字都替换为序列的最大值,将其中小于  的数字都替换为序列的最小值,请你帮他计算出替换后的序列。

【输入描述】

第一行包含两个正整数 ,含义如题面所示。

第二行包含  个数字,代表序列 。

【输出描述】

输出  个正整数,代表替换后的结果。

【样例输入1】

5 0-2 -1 0 1 2

【样例输出1】

-2 -2 0 2 2

【数据范围】

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

参考程序:

'''GESP202412 三级 数字替换https://www.luogu.com.cn/problem/B4066'''n, k = map(int, input().split())lst = list(map(int, input().split()))max_value = max(lst)min_value = min(lst)for i in range(n):if lst[i] > k:        lst[i] = max_valueelif lst[i] < k:        lst[i] = min_valuelst = list(map(str, lst))print(" ".join(lst))

Day02:GESP四级2025.09_最长连续段

【提交】

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

【问题描述】

对于  个整数构成的数组 ,如果对  都有 ,那么称数组  是一个连续段。

给定由  个整数构成的数组 ,你可以任意重排数组  中元素顺序。请问在重排顺序之后, 所有是连续段的子数组中,最长的子数组长度是多少?

例如,对于数组 ,可以将其重排为 ,有以下  个子数组:

其中除  以外的子数组均是连续段,因此是连续段的子数组中,最长子数组长度为 。

【输入描述】

第一行,一个正整数 ,表示数组长度。

第二行, 个整数 ,表示数组中的整数。

【输出描述】

一行,一个整数,表示数组  重排顺序后,所有是连续段的子数组的最长长度。

【样例输入1】

41 0 2 4

【样例输出1】

3

【样例输入2】

99 9 8 2 4 4 3 5 3

【样例输出2】

4

【数据范围】

对于 % 的测试点,保证 。

对于所有测试点,保证 ,。

参考程序:

'''[GESP202509 四级] 最长连续段https://www.luogu.com.cn/problem/B4416'''n = int(input())lst = sorted(list(set(map(int, input().split()))))i, max_v = 0, 0while i < len(lst):    j = lst[i]    k, cnt = 1, 1while i + k < len(lst) and lst[i + k] == j + k:        cnt += 1        k += 1if cnt > max_v:        max_v = cnt    i += kprint(max_v)

青少年编程竞赛交流

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

最新文章

随机文章