涉及考试:计算机学会编程能力等级认证(GESP)、电子学会等级考试 活动内容:提供不同等级的真题供小朋友们选择练习 备考建议:根据自己备考的等级选择相应题目 附加价值:可作为白名单比赛的备考训练 本月打卡:本月GESP_Python打卡题目
【提交】
https://www.luogu.com.cn/problem/B4257
【问题描述】
图书馆里有 本书,不幸的是,还混入了一只老鼠,老鼠每 小时能啃光一本书,假设老鼠在啃光一本书之前,不会啃另一本。请问 小时后图书馆里还剩下多少本完整的书。
【输入描述】
三行,第一行一个正整数 ,表示图书馆里书的数量;
第二行,一个正整数 ,表示老鼠啃光一本书需要的时间;
第三行,一个正整数 ,表示经过的总时间;
输入数据保证 小时后至少会剩下一本书。
【输出描述】
一行,一个整数,表示 小时后图书馆里还剩下多少本书。
【样例输入1】
1023【样例输出1】
8【样例输入2】
524【样例输出2】
3【数据范围】
对于所有测试点,保证 ,保证 小时后至少会剩下一本书。
参考答案:
'''[GESP202503 一级] 图书馆里的老鼠https://www.luogu.com.cn/problem/B4257'''import mathn = int(input())x = int(input())y = int(input())print(n - math.ceil(y / x))【提交】
https://www.luogu.com.cn/problem/B3924
【问题描述】
小杨想要构造一个 的 H 字矩阵( 为奇数),具体来说,这个矩阵共有 行,每行 个字符,其中最左列、最右列都是 |,而中间一行(即第 行)的第 个字符都是 -,其余所有字符都是半角小写字母 a。例如,一个 的 H 字矩阵如下:
|aaa||aaa||---||aaa||aaa|请你帮小杨根据给定的 打印出对应的“H 字矩阵”。
【输入描述】
一行一个整数 (,保证 为奇数)。
【输出描述】
输出对应的“H 字矩阵”。
请严格按格式要求输出,不要擅自添加任何空格、标点、空行等任何符号。你应该恰好输出 行,每行除了换行符外恰好包含 个字符,这些字符要么是 -,要么是 |,要么是 a。你的输出必须和标准答案完全一致才能得分,请在提交前仔细检查。
【特别提醒】
在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。
【样例输入1】
5【样例输出1】
|aaa||aaa||---||aaa||aaa|【样例输入2】
7【样例输出2】
|aaaaa||aaaaa||aaaaa||-----||aaaaa||aaaaa||aaaaa|参考程序:
'''GESP2023.12二级 小杨的 H 字矩阵https://www.luogu.com.cn/problem/B3924'''N = int(input())for i in range(N):for j in range(N):if j == 0or j == N - 1: print('|', end='')elif i == N // 2: print('-', end='')else: print('a', end='') print()【提交】
https://www.luogu.com.cn/problem/B4262
【问题描述】
在文本处理中,统计单词出现的频率是一个常见的任务。现在,给定 个单词,你需要找出其中出现次数最多的单词。在本题中,忽略单词中字母的大小写(即 Apple、apple、APPLE、aPPle 等均视为同一个单词)。
请你编写一个程序,输入 个单词,输出其中出现次数最多的单词。
【输入描述】
第一行,一个整数 ,表示单词的个数;
接下来 行,每行包含一个单词,单词由大小写英文字母组成。
输入保证,出现次数最多的单词只会有一个。
【输出描述】
输出一行,包含出现次数最多的单词(输出单词为小写形式)。
【样例输入1】
6ApplebananaappleOrangebananaapple【样例输出1】
apple【数据范围】
对于所有测试点,,每个单词的长度不超过 ,且仅由大小写英文字母组成。
参考答案:
'''[GESP202503 三级] 词频统计https://www.luogu.com.cn/problem/B4262'''lst = []n = int(input())for _ in range(n): x = input() lst.append(x.lower())s = ""cnt = 0for i in lst: x = lst.count(i)if x > cnt: cnt = x s = iprint(s)【提交】
https://www.luogu.com.cn/problem/B3851
【问题描述】
1、灰度图像有256级灰阶,编码00-FF,对应0-255,即图像有很多点,每个点取值是00到FF。编程压缩到16级灰阶,对应0-F。
2、压缩规则:统计出每种灰阶的数量,取数量最多的前16种灰阶(如某种灰阶的数量与另外一种灰阶的数量相同,则以灰阶值从小到大为序),分别编号0-F。其他灰阶转换到最近的16种灰阶之一,将某个点灰阶数与16种灰阶种的一种相减,绝对值最小即为最近。
3、输入:多行数据,每行数据等长,每两个字符构成一个点,十六进制;输出:首先连续最多输出16种灰阶编码,不足16种灰阶就按实际输出;然后各行输出压缩后的编码,每行等长。
【输入描述】
1、第1次输入正整数,表示有多少行数据。
2、随后输入行数据。
3、特别提示:常规程序中,输入时好习惯是有提示。考试时由于系统限定,输入时所 有input()函数不可有提示信息。
【输出描述】
1、首先输出16种灰阶编码,共计32个字符。不足16种按实际输出。输出数量最多的16种灰阶,从多到少;如某种灰阶的数量与另外一种灰阶的数量相同,则以灰阶值从小到大为序;
2、特别提示:注意输出字母为大写,小写将判为错误,数本身与字母T和F之前没有空格。
【样例输入1】
1000FFCFAB00FFAC09071B5CCFAB7600AFCBAB11FFAB09981D34CFAF5601BFCEAB00FFAC0907F25FCFBA6510FBCBAB11FFAB09981DF4CFCA6700FFCBFB00FFAC0907A25CCFFC7600FFCBAB1CFFCB09FC1AC4CFCF6701FCCBAB00FFAC0F071A54CFBA6510EFCBAB11FFAB09981B34CFCF6701FFCBAB00FFAC0F071054CFAC761000CBAB11FFAB0A981B84CFCF66【样例输出1】
ABCFFF00CB09AC07101198011B6776FC321032657CD10E36409205ACC16DB41032657FD16D8F409205ACF14D324F326570D1FE3240C245FC411DBF4032687CD16D8F409205ACC11DB240326878D16E83409205ACE11D【样例解释1】
灰阶'AB'、'CF'和'FF'出现14次,'00'出现10次,'CB'出现9次,'09'出现7次,'AC'出现6次,'07'出现5次,'10'、'11'和'98'出现4次,'01'、'1B'、'67'、'76'和'FC'出现3次。
参考程序:
'''[GESP202306 四级] 图像压缩https://www.luogu.com.cn/problem/B3851'''# 图像压缩defcomposePixel(topDict, srcVal):if srcVal in topDict:return hex(topDict[srcVal])[2:].upper()else: # 不在列表中,计算最近距离 nearest = 255 nearestKey = "FF"for k, v in topDict.items(): tmpDistance = abs(int(srcVal, 16) - int(k, 16))if tmpDistance < nearest: nearest = tmpDistance nearestKey = vreturn hex(nearestKey)[2:].upper()N = int(input())dictDot = {}rawData = []newData = []for i in range(N): dataLine = input() rawData.append(dataLine) charCount = len(dataLine) groupCount = charCount // 2for i in range(groupCount): twoHex = dataLine[i * 2:i * 2 + 2] # 两个十六进制字符 dictDot[twoHex] = dictDot.get(twoHex, 0) + 1top16 = sorted(dictDot.items(), key=lambda x: (x[1], -int(x[0], 16)), reverse=True)[:16]top16Dict = {k: x for x, (k, v) in enumerate(top16)}for dataLine in rawData: groupCount = len(dataLine) // 2 tmp = ""for i in range(groupCount): tmp += composePixel(top16Dict, dataLine[i * 2:i * 2 + 2]) newData.append(tmp)for top in top16: print(top[0], end="")print()for everyLine in newData: print(everyLine)青少年编程竞赛交流
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),添加小助手微信,让他邀请大家进入学习群。进群之后大家可以参与定期组织的21天刷题打卡、等级考试测评、教育部白名单比赛辅导以及青少年编程组队竞赛等活动。
