涉及考试:计算机学会编程能力等级认证(GESP)、电子学会等级考试 活动内容:提供不同等级的真题供小朋友们选择练习 备考建议:根据自己备考的等级选择相应题目 附加价值:可作为白名单比赛的备考训练 本月打卡:本月GESP_Python打卡题目
【问题描述】
分数交错加减计算,形如:
(1)利用 input() 语句输入一个大于 1 的正整数;
(2)计算规则:分母为连续奇数,分子为 1,偶数位置相减,奇数位置相加,一直计算到最接近 N(含)的奇数分母为止;
(3)计算结果四舍五入保留 8 位小数,仅输出计算结果,没有其他。
【输入描述】
输入一个大于 1 的正整数,假设输入合规,不考虑不合规情景,如带小数点的数,负数等。
特别提示:常规程序中,输入时好习惯是有提示。考试时由于系统限定,输入时所有input()函数不可有提示信息。
【输出描述】
输出四舍五入保留 8 位小数。
特别提示:仅输出 8 位小数,没有其他。
【样例输入 1】
100【样例输出 1】
0.78039866【样例输入 2】
1000【样例输出 2】
0.78489816参考程序:
注意:仅供参考,考生可以自行设计,结果符合题意即可。
方法一:
N = int(input())i = 0s = 0j = 2 * i + 1while j <= N:if i % 2 == 0: s += 1 / jelse: s -= 1 / j i += 1 j = 2 * i + 1print(round(s, 8))方法二:
N = int(input())s = 0for i in range(1, N + 1, 2):if i % 4 == 1: s += 1 / ielif i % 4 == 3: s -= 1 / iprint(round(s, 8))方法三:
N = int(input())s = 0for i in range(1, N + 1, 4): s += 1 / ifor i in range(3, N + 1, 4): s -= 1 / iprint(round(s, 8))方法四:
N = int(input())s = 0for i in range(1, N + 1, 4): s += 1 / iif i + 2 <= N: s -= 1 / (i + 2)print(round(s, 8))【提交】
https://www.luogu.com.cn/problem/B4357
【问题描述】
对于正整数 ,如果 可以表为两个 的次幂之和,即 ( 均为非负整数),那么称 为幂和数。
给定正整数 ,请你求出满足 的整数 中有多少个幂和数。
【输入描述】
一行,两个正整数 ,含义如上。
【输出描述】
输出一行,一个整数,表示 之间幂和数的数量。
【样例输入1】
2 8【样例输出1】
6【样例输入2】
10 100【样例输出2】
20【数据范围】
对于所有测试点,保证 。
参考程序:
'''[GESP202506 二级] 幂和数https://www.luogu.com.cn/problem/B4357'''l, r = tuple(map(int, input().split()))x, cnt = 0, 0while2 ** x <= r: y = xwhile2 ** y <= r:if l <= 2 ** x + 2 ** y <= r: cnt += 1 y += 1 x += 1print(cnt)【提交】
https://www.luogu.com.cn/problem/B3843
【问题描述】
1、网站注册需要有用户名和密码,编写程序以检查用户输入密码的有效性。
2、合法的密码只能由 a-z 之间 26 个小写字母、A-Z 之间 26 个大写字母、0-9 之间10个数字以及!@#$四个特殊字母构成。
3、密码最短长度:6 个字符,密码最大长度:12 个字符。
4、大写字母、小写字母和数字必须有其中两种,以及至少有四个特殊字符中的一个。
【输入描述】
1、输入以英文逗号分隔的多个字符组合作为被检测密码。输入时的逗号都作为分隔符,不被视作检验密码本身。
2、特别提示:常规程序中,输入时好习惯是有提示。考试时由于系统限定,输入时所有input()函数不可有提示信息。
【输出描述】
1、逐行输出 0 个或多个合规的密码。
2、输出顺序以输入字符串出现先后为序,即先出现则先输出。
【样例输入1】
seHJ12!@,sjdkffH$123,sdf!@^&12 HDH,123&^YUhg@!【样例输出1】
seHJ12!@sjdkffH$123【样例输入2】
123!@#&^%ZAqaz,abc123ABC!@#,qaz123WSX!@#,12QAqa!@,12QAqa!@^&【样例输出2】
abc123ABC!@#,qaz123WSX!@#,12QAqa!@参考程序:
'''[GESP202306 三级] 密码合规https://www.luogu.com.cn/problem/B3843'''pwdList = input().split(",")for itm in pwdList: lowerCount = 0 upperCount = 0 digitCount = 0 specialCount = 0 otherCount = 0for letter in itm:if ord('a') <= ord(letter) <= ord('z'): lowerCount += 1elif ord('A') <= ord(letter) <= ord('Z'): upperCount += 1elif ord('0') <= ord(letter) <= ord('9'): digitCount += 1elif letter in"!@#$": specialCount += 1else: otherCount += 1break triState = 0# 大写小写数字种类数量if lowerCount > 0: triState += 1if upperCount > 0: triState += 1if digitCount > 0: triState += 1if triState >= 2 and specialCount > 0 and (6 <= len(itm) <= 12) and othercount == 0: print(itm)【提交】
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天刷题打卡、等级考试测评、教育部白名单比赛辅导以及青少年编程组队竞赛等活动。
