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

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

  • 2026-10-11 05:55:05
【第40期】21天养成编程习惯:Python刷题第20天

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

  • 涉及考试:计算机学会编程能力等级认证(GESP)、电子学会等级考试
  • 活动内容:提供不同等级的真题供小朋友们选择练习
  • 备考建议:根据自己备考的等级选择相应题目
  • 附加价值:可作为白名单比赛的备考训练
  • 本月打卡:本月GESP_Python打卡题目

Day20:GESP一级2023.12_小杨报数

【提交】

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

【问题描述】

小杨需要从  到  报数。在报数过程中,小杨希望跳过  的倍数。例如,如果 ,,那么小杨就需要依次报出 、、。

现在,请你依次输出小杨报的数。

【输入描述】

输入 2 行,第一行一个整数 ();第二行一个整数 ()。

【输出描述】

输出若干行,依次表示小杨报的数。

【特别提醒】

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

【样例输入 1】

52

【样例输出 1】

135

【样例输入 2】

103

【样例输出 2】

12457810

参考程序:

'''[GESP202312 一级] 小杨报数https://www.luogu.com.cn/problem/B3922'''N = int(input())M = int(input())for i in range(1, N + 1):if i % M != 0:        print(i)

Day20:GESP二级2025.03_等差矩阵

【提交】

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

【问题描述】

小 A 想构造一个  行  列的矩阵,使得矩阵的每一行与每一列均是等差数列。小 A 发现,在矩阵的第  行第  列填入整数 ,得到的矩阵能满足要求。你能帮小 A 输出这个矩阵吗?

【输入描述】

一行,两个正整数 。

【输出描述】

共  行,每行  个由空格分割的整数,表示小 A 需要构造的矩阵。

【样例输入1】

3 4

【样例输出1】

1 2 3 42 4 6 83 6 9 12

【数据范围】

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

参考程序:

'''[GESP202503 二级] 等差矩阵https://www.luogu.com.cn/problem/B4259'''n, m = list(map(int, input().split()))for i in range(1, n + 1):for j in range(1, m + 1):        print(i * j, end=" ")    print()

Day20: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")

Day20: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天刷题打卡、等级考试测评、教育部白名单比赛辅导以及青少年编程组队竞赛等活动。

最新文章

随机文章