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

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

  • 2026-09-18 14:27:12
【第38期】21天养成编程习惯:Python刷题第20天

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

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

Day20:GESP一级2024.09_美丽数字

【提交】

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

【问题描述】

小杨有  个正整数,他认为一个正整数是美丽数字当且仅当该正整数是  的倍数但不是  的倍数。

小杨想请你编写一个程序计算  个正整数中美丽数字的数量。

【输入描述】

第一行包含一个正整数 ,代表正整数个数。

第二行包含  个正整数 。

【输出描述】

输出一个整数,代表其中美丽数字的数量。

【样例输入1】

31 9 72

【样例输出1】

1

【提示】

  •  既不是  的倍数,也不是  的倍数;
  •  是  的倍数,不是  的倍数;
  •  既是  的倍数,也是  的倍数; 因此答案为 。

对于全部数据,保证有 。

参考答案:

'''[GESP202409 一级] 美丽数字https://www.luogu.com.cn/problem/B4035'''n = int(input())cnt = 0lst = map(int, input().split())for x in lst:if x % 9 == 0and x % 8 != 0:        cnt += 1print(cnt)

Day20:GESP二级2023.06_找素数

【提交】

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

【问题描述】

小明刚刚学习了素数的概念:如果一个大于 1 的正整数,除了 1 和它自身外,不能被其他正整数整除,则这个正整数是素数。现在,小明想找到两个正整数 A 和 B 之间(包括 A 和 B)有多少个素数。

【输入描述】

输入 2 行,第一行包含正整数 A,第二行包含正整数 B。约定 2≤A≤B≤1000。

【输出描述】

输出一行,包含一个整数 C,表示找到 C 个素数。

【样例输入1】

210

【样例输出1】

4

【样例解释1】

在 2 和 10 之间有 4 个素数,分别为:2、3、5、7。

【样例输入2】

98100

【样例输出2】

0

参考程序:

'''[GESP202306 二级] 找素数https://www.luogu.com.cn/problem/B3840'''n = int(input())m = int(input())tnt = 0for i in range(n, m + 1):for j in range(2, i):if i % j == 0:breakelse:        tnt += 1print(tnt)

Day20:GESP三级2024.12_打印数字

【提交】

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

【问题描述】

小杨为数字 ,, 和  设计了一款表示形式,每个数字占用了  的网格。数字 ,, 和  的表示形式如下:

..... ****. ..... ......***. ****. ****. ****..***. ****. ..... ......***. ****. .**** ****...... ****. ..... .....

小杨想请你将给定的数字  转换为对应的表示形式。

【输入描述】

第一行包含一个正整数代表 。

【输出描述】

输出对应的表示形式。

【样例输入1】

12230

【样例输出1】

****.....................****.****.****.****..***.****.................***.****..****.********..***.****.....................

【数据范围】

对于全部数据,保证有 ,且  仅由数字 ,,, 组成。

参考程序:

'''GESP202412 三级 打印数字https://www.luogu.com.cn/problem/B4067'''lst = [    [".....", ".***.", ".***.", ".***.", "....."],    ["****.", "****.", "****.", "****.", "****."],    [".....", "****.", ".....", ".****", "....."],    [".....", "****.", ".....", "****.", "....."]]n = list(map(int, list(input())))for i in range(5):    s = ""for j in n:        s += lst[j][i]    print(s)

Day20:GESP四级2025.12_建造

【提交】

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

【问题描述】

小 A 有一张  行  列的地形图,其中第  行第  列的数字  代表坐标 () 的海拔高度。

停机坪为一个  的区域且内部所有  个点的最大高度和最小高度之差不超过 。

小 A 想请你计算出,在所有适合建造停机坪的区域中,区域内部  个点海拔之和最大是多少。

【输入描述】

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

之后  行,第  行包含  个整数 ,代表坐标 () 的高度。

数据保证总存在一个适合建造停机坪的区域。

【输出描述】

输出一行,代表最大的海拔之和。

【样例输入1】

5 5 35 5 5 5 55 1 5 1 55 5 5 5 55 2 5 2 53 5 5 5 2

【样例输出1】

40

【数据范围】

对于所有测试点,保证 。

参考程序:

'''[GESP202512 四级] 建造https://www.luogu.com.cn/problem/B4451'''# 读取第一行输入:地图行数M,列数N,最大允许高度差HM, N, H = list(map(int, input().split()))# 读取地形图数据,创建M行N列的二维列表aa = [list(map(int, input().split())) for _ in range(M)]max_sum = 0# 遍历所有可能的3x3区域的左上角坐标for i in range(M - 2):for j in range(N - 2):# 提取当前3x3区域的所有9个元素# 使用 + 运算符将三个列表拼接成一个包含9个元素的列表 block        block = a[i][j:j + 3] + a[i + 1][j:j + 3] + a[i + 2][j:j + 3]if max(block) - min(block) <= H:            max_sum = max(max_sum, sum(block))print(max_sum)

青少年编程竞赛交流

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

最新文章

随机文章