涉及考试:计算机学会编程能力等级认证(GESP)、电子学会等级考试 活动内容:提供不同等级的真题供小朋友们选择练习 备考建议:根据自己备考的等级选择相应题目 附加价值:可作为白名单比赛的备考训练 本月打卡:八月GESP_Python打卡题目 “Python一级”备考指南 “Python二级”备考指南 “Python三级”备考指南 “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/B4497
【问题描述】
对于正整数 ,如果 的所有数位中包含恰好 个 ,Alice 会认为这个正整数是美丽的。例如,正整数 中包含 个 ,所以 是美丽的;正整数 中包含 个 ,所以 不是美丽的;正整数 中包含 个 ,所以 不是美丽的。
Alice 想知道正整数 到正整数 (包括 和 )中有多少美丽的正整数,你能帮她数一数吗?
【输入描述】
输入共 行,第一行为正整数 ,第二行为正整数 。
【输出描述】
输出一行,包含一个整数 ,表示 到 中 美丽数的数量。
【样例输入1】
22212223【样例解释】
到 中, 与 是美丽的, 不是美丽的。
【数据范围】
保证 。
参考程序:
'''[GESP202603 二级] 数数https://www.luogu.com.cn/problem/B4497'''L = int(input())R = int(input())ans = 0for i in range(L, R + 1): k = i cnt = 0while k != 0:if k % 10 == 2: cnt += 1 k = k // 10if cnt == 3: ans += 1print(ans)【提交】
https://www.luogu.com.cn/problem/B4039
【问题描述】
一个字符串是回文串,当且仅当该字符串从前往后读和从后往前读是一样的,例如, 和 都是回文串,但 不是。
小杨有 个仅包含小写字母的字符串,他想请你编写程序判断每个字符串是否由两个长度至少为 的回文串前后拼接而成。
【输入描述】
第一行包含一个正整数 ,代表字符串数量。
之后 行每行一个仅包含小写字母的字符串。
【输出描述】
对于每个字符串输出一行,如果该字符串由两个长度至少为 的回文串前后拼接而成则输出 Yes,否则输出 No。
【样例输入1】
4abcdaabbbaaacabcdd【样例输出1】
NoYesNoNo【提示】
对于第 个字符串,都不是由两个长度至少为 的回文串前后拼接而成。
第 个字符串由回文串 和 前后拼接而成,并且两个回文串长度都至少为 。
对于全部数据,保证有 ,并且每个字符串的长度不超过 。
参考答案:
'''[GESP202409 三级] 回文拼接https://www.luogu.com.cn/problem/B4039'''n = int(input())for i in range(n): s = input() j = 1while j <= len(s) - 2: s1 = s[:j] s2 = s[j:]if s1 == s1[::-1] and s2 == s2[::-1]: print("Yes")break j += 1if j > len(s) - 2: print("No")【提交】
https://www.luogu.com.cn/problem/B4360
【问题描述】
小 A 在高为 宽为 的矩形画布上绘制了一幅画。由于画布边缘留白太多,小 A 想适当地裁剪画布,只保留画的主体。具体来说,画布可以视为 行 列的字符矩阵,其中的字符均为 ASCII 码位于 之间的可见字符,小 A 只保留画布中由第 行到第 行、第 列到第 列构成的子矩阵。
小 A 将画布交给了你,你能帮他完成画布的裁剪吗?
【输入描述】
第一行,两个正整数 ,分别表示画布的行数与列数。
第二行,四个正整数 ,表示保留的行列边界。
接下来 行,每行一个长度为 的字符串,表示画布内容。
【输出描述】
输出共 行,每行一个长度为 的字符串,表示裁剪后的画布。
【样例输入1】
3 52 2 2 4......>_<......【样例输出1】
>_<【样例输入2】
5 51 2 3 4AbCdEfGhIkLmNoPqRsTuVwXyZ【样例输出2】
CdhI【数据范围】
对于所有测试点,保证 ,,。
参考程序:
方法一:
'''[GESP202506 四级] 画布裁剪https://www.luogu.com.cn/problem/B4360'''h, w = tuple(map(int, input().split()))x1, x2, y1, y2 = tuple(map(int, input().split()))lst = []for i in range(h): lst.append(list(input().strip()))for i in range(x1 - 1, x2):for j in range(y1 - 1, y2): print(lst[i][j], end="") print()方法二:
'''[GESP202506 四级] 画布裁剪https://www.luogu.com.cn/problem/B4360'''h, w = tuple(map(int, input().split()))x1, x2, y1, y2 = tuple(map(int, input().split()))lst = [input().strip() for _ in range(h)]for i in range(x1 - 1, x2): print(lst[i][y1 - 1:y2])青少年编程竞赛交流
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),添加小助手微信,让他邀请大家进入学习群。进群之后大家可以参与定期组织的21天刷题打卡、等级考试测评、教育部白名单比赛辅导以及青少年编程组队竞赛等活动。
