涉及考试:计算机学会编程能力等级认证(GESP)、电子学会等级考试 活动内容:提供不同等级的真题供小朋友们选择练习 备考建议:根据自己备考的等级选择相应题目 附加价值:可作为白名单比赛的备考训练 本月打卡:八月GESP_Python打卡题目 “Python一级”备考指南 “Python二级”备考指南 “Python三级”备考指南 “Python四级”备考指南
【提交】
https://www.luogu.com.cn/problem/B3864
【问题描述】
所有个位数为的正整数,以及所有的倍数,都被小明称为“幸运数”。小明想知道正整数和之间(包括和)所有幸运数的和,你能帮帮他吗?
【输入描述】
输入3行。第一行包含一个正整数,第二行包含一个正整数,第三行包含一个正整数。约定,。
【输出描述】
输出1行,符合题意的幸运数之和。
【样例输入1】
7110【样例输出1】
7【样例解释1】
1和10之间共有1个7幸运数:7。因为7既是7的倍数,个位数⼜为7。因此,结果为7。
【样例输入2】
71020【样例输出2】
31【样例解释2】
10和20之间共有2个7幸运数:14和17。14是7的倍数,17的个位数为7。因此,结果为31。
参考程序:
方法一:
'''[GESP202309 一级] 小明的幸运数https://www.luogu.com.cn/problem/B3864'''k = int(input())L = int(input())R = int(input())s = 0for i in range(L, R + 1):if i % 10 == k or i % k == 0: s += iprint(s)方法二:
'''[GESP202309 一级] 小明的幸运数https://www.luogu.com.cn/problem/B3864'''k = int(input())L = int(input())R = int(input())lst = [i for i in range(L, R + 1) if i % 10 == k or i % k == 0]print(sum(lst))【提交】
https://www.luogu.com.cn/problem/B4260
【问题描述】
假设现在是 年 月 日 时而 小时后是 年 月 日 时,对于给定的 ,小杨想请你帮他计算出对应的 是多少。
【输入描述】
输入包含五行,每行一个正整数,分别代表 。
【输出描述】
输出四个正整数,代表 。
【样例输入1】
2008228231【样例输出1】
2008 2 29 0【数据范围】
对于全部数据,保证有 ,,,,。数据保证为合法时间。
【提示】
闰年判断规则
满足以上任意一条规则的年份就是闰年,否则是平年。
参考程序:
'''[GESP202503 二级] 时间跨越https://www.luogu.com.cn/problem/B4260'''y = int(input())m = int(input())d = int(input())h = int(input())k = int(input())h = k + hif h >= 24: h = h - 24 d = d + 1if m == 1or m == 3or m == 5or m == 7or m == 8or m == 10or m == 12:if d > 31: d = d - 31 m = m + 1elif m == 4or m == 6or m == 9or m == 11:if d > 30: d = d - 30 m = m + 1elif m == 2:if (y % 4 == 0and y % 100 != 0) or (y % 400 == 0):if d > 29: d = d - 29 m = m + 1else:if d > 28: d = d - 28 m = m + 1if m > 12: m = m - 12 y = y + 1print(y, m, d, h)【提交】
https://www.luogu.com.cn/problem/B4038
【问题描述】
小杨有一个包含 个正整数的序列 ,他认为一个序列是平衡的当且仅当存在一个正整数 ()使得序列第 个到第 个数字的总和等于第 个到第 个数字的总和。
小杨想请你判断序列 是否是平衡的。
【输入描述】
第一行包含一个正整数 ,代表测试用例组数。
接下来是 组测试用例。对于每组测试用例,一共两行。
第一行包含一个正整数 ,代表序列长度。
第二行包含 个正整数,代表序列 。
【输出描述】
对于每组测试用例,如果序列 是否是平衡的,输出 Yes,否则输出 No。
【样例输入1】
331 2 342 3 1 451 2 3 4 5 【样例输出1】
YesYesNo【提示】
对于全部数据,保证有 。
参考程序:
'''[GESP202409 三级] 平衡序列https://www.luogu.com.cn/problem/B4038'''t = int(input())for _ in range(t): n = int(input()) lst = list(map(int, input().split())) total = sum(lst) ans = 0 flag = Truefor x in lst: ans += xif ans * 2 == total: print("Yes") flag = Falsebreakif flag: print("No")【提交】
https://www.luogu.com.cn/problem/B4452
【问题描述】
小 A 有 元预算。商店有 个商品,每个商品有商品名 、价格 和优先级 三种属性,其中 为正整数,且 越小代表商品的优先级越高。
小 A 的购物策略为:
总是优先买优先级最高的东西;
如果有多个最高优先级商品,购买价格最低的;
如果有多个优先级最高且价格最低的商品,购买商品名字典序最小的。
小 A 想知道能购买哪些商品。
【输入描述】
第一行两个正整数 ,代表预算和商品数。
之后 行,每行一个商品,依次为 ,代表第 个商品的商品名、价格、优先级。
数据保证不存在两个名字相同的商品。
【输出描述】
按照字典序从小到大的顺序,输出所有购买商品的商品名。
【样例输入1】
20 4apple 6 8bus 15 1cab 1 10water 4 8【样例输出1】
buscabwater【数据范围】
对于所有测试点,保证 ,,, ,。商品名仅由小写字母组成且不存在两个相同的商品名。
参考程序:
'''[GESP202512 四级] 优先购买https://www.luogu.com.cn/problem/B4452'''M, N = list(map(int, input().split()))items = []for _ in range(N): name, price, priority = input().split() items.append((name, int(price), int(priority)))# 排序规则:优先级升序,价格升序,名字字典序升序items.sort(key=lambda x: (x[2], x[1], x[0]))# 贪心购买bought = []for name, price, _ in items:if price <= M: bought.append(name) M -= price# 将购买的商品按字典序排序后输出bought.sort()for name in bought: print(name)青少年编程竞赛交流
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),添加小助手微信,让他邀请大家进入学习群。进群之后大家可以参与定期组织的21天刷题打卡、等级考试测评、教育部白名单比赛辅导以及青少年编程组队竞赛等活动。
