涉及考试:计算机学会编程能力等级认证(GESP)、电子学会等级考试 活动内容:提供不同等级的真题供小朋友们选择练习 备考建议:根据自己备考的等级选择相应题目 附加价值:可作为白名单比赛的备考训练 本月打卡:本月打卡题目
【提交】
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))要求:请编程实现如下功能:
(1)程序开始运行时,提醒用户输入三个人的名字和体重(可以分开输入,每次输入名字或者体重);
(2)程序自动比较,找出最重的一个人的名字和体重;
(3)输出的格式不限,但是要有最重人的姓名和体重信息。
参考程序:
方法一:
w1 = int(input("请输入第一个人的体重:"))n1 = input("请输入第一个人的名字:")w2 = int(input("请输入第二个人的体重:"))n2 = input("请输入第二个人的名字:")w3 = int(input("请输入第三个人的体重:"))n3 = input("请输入第三个人的名字:")maximum = w1m_name = n1if w2 > maximum: maximum = w2 m_name = n2if w3 > maximum: maximum = w3 m_name = n3print("体重最重的人是:", m_name)print("他的体重是:", maximum)方法二:
name = []weight = []for i in range(3): a = input('请输入姓名:') b = int(input('请输入体重:')) name.append(a) weight.append(b)c = max(weight)d = weight.index(c)print("体重最重的人是:", name[d])print("他的体重是:", c)方法三:
lst = []for i in range(3): a, b = input('请输入第' + str(i + 1) + '个人的名字和体重,用逗号隔开').split(",") lst.append((a, int(b)))max_weight = lst[0][1]max_index = 0for i in range(1, 3):if lst[i][1] > max_weight: max_weight = lst[i][1] max_index = iprint("体重最重的人是:", lst[max_index][0])print("他的体重是:", lst[max_index][1])【提交】
https://www.luogu.com.cn/problem/B3956
【问题描述】
小杨同学发明了一种新型密码,对于每一个小写英文字母,该小写字母代表了一个正整数,即该字母在字母顺序中的位置,例如字母 a 代表了正整数 1,字母 b 代表了正整数 2;对于每一个大写英文字母,该大写字母代表了一个负整数,即该字母的 ASCII 码的相反数,例如字母 A 代表了正整数 -65。小杨同学利用这种方式对一个整数进行了加密并得到了一个由大写字母和小写字母组成的字符串,该字符串中每个字母所代表数字的总和即为加密前的整数,例如 aAc 对应的加密前的整数为 1+(-65)+3=-61。
对于给定的字符串,请你计算出它对应的加密前的整数是多少。
【输入描述】
第一行一个正整数,表示字符串中字母的个数。
第二行一个由大写字母和小写字母的字符串,代表加密后得到的字符串。
【输出描述】
输出一行一个整数,代表加密前的整数。
【样例输入1】
3aAc【样例输出1】
-61对于全部数据,保证有。
参考程序:
'''[GESP202403 三级] 字母求和https://www.luogu.com.cn/problem/B3956'''n = int(input())s = input()sum = 0for char in s: ascii_code = ord(char)if65 <= ascii_code <= 90: sum -= ascii_codeelif97 <= ascii_code <= 122: sum += (ascii_code - 97 + 1)print(sum)【提交】
https://www.luogu.com.cn/problem/B4415
【问题描述】
作为将军,你自然需要合理地排兵布阵。地图可以视为 行 列的网格,适合排兵的网格以 1 标注,不适合排兵的网格以 0 标注。现在你需要在地图上选择一个矩形区域排兵,这个矩形区域内不能包含不适合排兵的网格。请问可选择的矩形区域最多能包含多少网格?
【输入描述】
第一行,两个正整数 ,分别表示地图网格的行数与列数。
接下来 行,每行 个整数 ,表示各行中的网格是否适合排兵。
【输出描述】
一行,一个整数,表示适合排兵的矩形区域包含的最大网格数。
【样例输入1】
4 30 1 11 0 10 1 11 1 1【样例输出1】
4【样例输入2】
3 51 0 1 0 10 1 0 1 00 1 1 1 0【样例输出2】
3【数据范围】
对于所有测试点,保证 ,。
参考程序:
'''[GESP202509 四级] 排兵布阵https://www.luogu.com.cn/problem/B4415'''defcheck(xa, ya, xb, yb): cnt = 0for i in range(xa, xb + 1):for j in range(ya, yb + 1):if w[i][j] != 1:return0 cnt += 1return cntn, m = map(int, input().split())w = []for i in range(n): w.append(list(map(int, input().split())))ans = 0for i in range(n):for j in range(m):for ii in range(i, n):for jj in range(j, m): ans = max(ans, check(i, j, ii, jj))print(ans)青少年编程竞赛交流
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),添加小助手微信,让他邀请大家进入学习群。进群之后大家可以参与定期组织的21天刷题打卡、等级考试测评、教育部白名单比赛辅导以及青少年编程组队竞赛等活动。
