涉及考试:计算机学会编程能力等级认证(GESP)、电子学会等级考试 活动内容:提供不同等级的真题供小朋友们选择练习 备考建议:根据自己备考的等级选择相应题目 附加价值:可作为白名单比赛的备考训练 本月打卡:本月GESP_Python打卡题目
【提交】
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)【提交】
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()【提交】
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")【提交】
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天刷题打卡、等级考试测评、教育部白名单比赛辅导以及青少年编程组队竞赛等活动。
