涉及考试:计算机学会编程能力等级认证(GESP)、电子学会等级考试 活动内容:提供不同等级的真题供小朋友们选择练习 备考建议:根据自己备考的等级选择相应题目 附加价值:可作为白名单比赛的备考训练 本月打卡:本月GESP_Python打卡题目
【问题描述】
利用 input() 语句先后输入两个正整数,分别代表鸡兔的头和脚的总数。其中,兔有四只脚,鸡有两只脚,都只有一个头。
请编写 Python 代码计算出兔和鸡的数量,输出结果形如“Chicken=15 Rabbit=5”,如没有解则输出“No solution!”。
【输入描述】
分两次输入,第一次输入头的总数,回车后输入脚的总数。
特别提示:常规程序中,输入时好习惯是有提示。考试时由于系统限定,输入时所有input()函数不可有提示信息。
【输出描述】
如果有解,则输出鸡和兔分别数量,形如“Chicken=15 Rabbit=5”Rabbit之前有 1 个英文半角空格,C 和 R 都为大写。
如没有解则输出“No solution!”,No 之后有 1 个英文半角空格,solution 之后有英文半角叹号。
特别提示:注意字母大小写以及空格、叹号等匹配一致。
【样例输入 1】
2050【样例输出 1】
Chicken=15 Rabbit=5【样例输入 2】
2030【样例输出 2】
No solution!参考程序:
注意:仅供参考,考生可以自行设计,结果符合题意即可。
方法一:
head = int(input())foot = int(input())i = 0num = 0while i <= head:if i * 2 + (head - i) * 4 == foot: print("Chicken={} Rabbit={}".format(i, head - i)) num += 1 i += 1if num == 0: print("No solution!")方法二:
head = int(input())foot = int(input())R = (foot - 2 * head) / 2C = head - Rif R < 0or int(R) != R: print('No solution!')else: C = int(C) R = int(R) print("Chicken={} Rabbit={}".format(C, R))【提交】
https://www.luogu.com.cn/problem/B4007
【问题描述】
小杨认为自己的幸运数是正整数 (注:保证 )。小杨想知道,对于从 到 的所有正整数中, 出现了多少次。
【输入描述】
第一行包含一个正整数 。
第二行包含一个正整数 。
【输出描述】
输出从 到 的所有正整数中, 出现的次数。
【样例输入1】
252【样例输出1】
9【样例解释】
从 到 中, 出现的正整数有 ,一共出现了 次。
【数据范围】
对于全部数据,保证有 。
参考程序:
'''[GESP202406 二级] 计数https://www.luogu.com.cn/problem/B4007'''n = int(input())k = int(input())cnt = 0for i in range(1, n + 1): cnt += str(i).count(str(k))print(cnt)【提交】
https://www.luogu.com.cn/problem/B4003
【问题描述】
小杨学习了加密技术移位,所有大写字母都向后按照一个固定数目进行偏移。偏移过程会将字母表视作首尾相接的环,例如,当偏移量是3的时候,大写字母 A 会替换成 D,大写字母 Z 会替换成 C,总体来看,大写字母表 ABCDEFGHIJKLMNOPQRSTUVWXYZ 会被替换成 DEFGHIJKLMNOPQRSTUVWXYZABC。
注:当偏移量是26的倍数时,每个大写字母经过偏移后会恰好回到原来的位置,即大写字母表 ABCDEFGHIJKLMNOPQRSTUVWXYZ 经过偏移后会保持不变。
【输入描述】
第一行包含一个正整数 。
【输出描述】
输出在偏移量为 的情况下,大写字母表 ABCDEFGHIJKLMNOPQRSTUVWXYZ 移位替换后的结果。
【样例输入1】
3【样例输出1】
DEFGHIJKLMNOPQRSTUVWXYZABC【样例解释】
当偏移量是3的时候,大写字母 A 会替换成 D,大写字母 Z 会替换成 C,总体来看,大写字母表 ABCDEFGHIJKLMNOPQRSTUVWXYZ 会被替换成 DEFGHIJKLMNOPQRSTUVWXYZABC。
【数据范围】
对于全部数据,保证有 。
参考程序:
'''GESP202406 三级 移位https://www.luogu.com.cn/problem/B4003'''s = "".join([chr(ord("A") + i) for i in range(26)])n = int(input()) % 26print(s[n:] + s[:n])【提交】
https://www.luogu.com.cn/problem/B4501
【问题描述】
现有一片山地,可以视为一个 行 列的网格图,第 行 列的海拔为 。
若一个单元格的海拔不高于其所有相邻(包括边相邻和顶点相邻,每个单元格至多有 8 个相邻的单元格)单元格的海拔,则称其为山谷。
请你数一数该片山地中有多少山谷。
【输入描述】
第一行包含 个整数 ,表示山地的大小。
之后 行,每行包含 个整数 ,表示海拔。
【输出描述】
输出 1 行,包含 1 个整数 ,表示山谷的数量。
【样例输入1】
3 57 6 7 7 96 5 6 7 66 5 7 8 9【样例输出1】
3【样例解释】
样例 1 如图所示,绿色单元格代表山谷:
【数据范围】
保证 ,。
参考程序:
''' [GESP202603 四级] 山之谷 https://www.luogu.com.cn/problem/B4501'''n, m = tuple(map(int, input().split()))lst = []for _ in range(n): d = list(map(int, input().split())) lst.append(d)dx = [-1, -1, -1, 0, 0, +1, +1, +1]dy = [-1, 0, +1, -1, +1, -1, 0, +1]cnt = 0for i in range(n):for j in range(m): flag = Truefor k in range(8): x, y = i + dx[k], j + dy[k]if x < 0or x > n - 1or y < 0or y > m - 1:continueif lst[i][j] > lst[x][y]: flag = Falsebreakif flag isTrue: cnt += 1print(cnt)青少年编程竞赛交流
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),添加小助手微信,让他邀请大家进入学习群。进群之后大家可以参与定期组织的21天刷题打卡、等级考试测评、教育部白名单比赛辅导以及青少年编程组队竞赛等活动。
