涉及考试:计算机学会编程能力等级认证(GESP)、电子学会等级考试 活动内容:提供不同等级的真题供小朋友们选择练习 备考建议:根据自己备考的等级选择相应题目 附加价值:可作为白名单比赛的备考训练 本月打卡:八月GESP_Python打卡题目 “Python一级”备考指南 “Python二级”备考指南 “Python三级”备考指南 “Python四级”备考指南
【提交】
https://www.luogu.com.cn/problem/B4258
【问题描述】
四舍五入是一种常见的近似计算方法。现在,给定 个整数,你需要将每个整数四舍五入到最接近的整十数。例如, 四舍五入后为 , 四舍五入后为 。
【输入描述】
共两行,第一行,一个整数 ,表示接下来输入的整数个数。
接下来 行,每行一个整数 ,表示需要四舍五入的整数。
【输出描述】
行,每行一个整数,表示每个整数四舍五入后的结果,整数之间用空格分隔。
【样例输入1】
54358256790【样例输出1】
4060307090【数据范围】
对于所有测试点,保证 ,。
参考程序:
'''[GESP202503 一级] 四舍五入https://www.luogu.com.cn/problem/B4258'''n = int(input())for _ in range(n): x = int(input()) print(int(x / 10+0.5) * 10)【提交】
https://www.luogu.com.cn/problem/B3865
【问题描述】
小杨想要构造一个的 字矩阵(为奇数),这个矩阵的两条对角线都是半角加号 +,其余都是半角减号-。例如,一个的 字矩阵如下:
+---+-+-+---+---+-+-+---+请你帮小杨根据给定的打印出对应的“字矩阵”。
【输入描述】
一行一个整数(,保证为奇数)。
【输出描述】
输出对应的“字矩阵”。
请严格按格式要求输出,不要擅自添加任何空格、标点、空行等任何符号。你应该恰好输出行,每行除了换行符外恰好包含个字符,这些字符要么是 + ,要么是 - 。
【特别提醒】
在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。
【样例输入1】
5【样例输出1】
+---+-+-+---+---+-+-+---+【样例输入2】
7【样例输出2】
+-----+-+---+---+-+-----+-----+-+---+---+-+-----+参考程序:
'''[GESP202309 二级] 小杨的 X 字矩阵https://www.luogu.com.cn/problem/B3865'''N = int(input())for i in range(N):for j in range(N):if j == i or i + j == N - 1: print("+", end="")else: print("-", end="") print()【提交】
https://www.luogu.com.cn/problem/B4358
【问题描述】
数据在传输过程中可能出错,因此接收方收到数据后通常会校验传输的数据是否正确,奇偶校验是经典的校验方式之一。
给定 个非负整数 代表所传输的数据,它们的校验码取决于这些整数在二进制下 的数量之和的奇偶性。如果这些整数在二进制下共有奇数个 ,那么校验码为 ;否则校验码为 。你能求出这些整数的校验码吗?
【输入描述】
第一行,一个正整数 ,表示所传输的数据量。
第二行, 个非负整数 ,表示所传输的数据。
【输出描述】
输出一行,两个整数,以一个空格分隔:
第一个整数表示 在二进制下 的总数量;
第二个整数表示校验码(0或1)。
【样例输入1】
471 69 83 80【样例输出1】
13 1【样例输入2】
61 2 4 8 16 32【样例输出2】
6 0【数据范围】
对于所有测试点,保证 ,。
参考程序:
方法一:
''' [GESP202506 三级] 奇偶校验 https://www.luogu.com.cn/problem/B4358'''n = int(input())lst = list(map(int, input().split()))cnt = 0for x in lst:while x != 0:if x % 2 == 1: cnt += 1 x = x // 2print("{0} {1}".format(cnt, cnt % 2))方法二:
''' [GESP202506 三级] 奇偶校验 https://www.luogu.com.cn/problem/B4358'''n = int(input())lst = list(map(int, input().split()))cnt = 0for x in lst: bin_str = bin(x)[2:] cnt += bin_str.count("1")print("{0} {1}".format(cnt, cnt % 2))【提交】
https://www.luogu.com.cn/problem/B3850
【问题描述】
变化正整数的各个奇数位(从右到左,个位为第 1 位,奇数,16347),变化的规则是乘以 7,如果该奇数位与 7 相乘的结果大于 9 则各位数相加,如相加结果仍然大于 9 则继续各位数相加,直到结果不大于 9;如果该奇数位与 7 相乘的结果不大于 9 则该数为该奇数位变化结果。偶数位不发生变化。各个奇数位变化完毕后,将新数的各位数相加,如果相加之和是 8 的整数倍,则为幸运数;
例如 16347,第 1 位 7 奇数位,乘以 7 结果为 49,大于 9 各位数相加为 13 大于 9 继续各位数相加最后结果为 4;然后变化第 3 位 3,第 5 位 1。最后变化结果为 76344,对于结果 76344 其各位数之和为 24,是 8 的倍数,为幸运数;
首先输入 ,随后输入 行正整数。输出 行,对应 个正整数是否为幸运数,如是则输出 否则 。
【输入描述】
首先输入正整数 随后输入 行正整数,每行一个数。不考虑输入不合规情形,负数、负整数、非数字构成的字符串等。
特别提示:常规程序中,输入时好习惯是有提示。考试时由于系统限定,输入时所有input()函数不可有提示信息。
【输出描述】
输出 行,对应 个正整数是否为幸运数,如是则输出 否则 。
特别提示:注意输出字母为英文大写,小写或其他将判为错误。
【样例输入1】
21634776344【样例输出1】
TF参考程序:
'''[GESP202306 四级] 幸运数https://www.luogu.com.cn/problem/B3850'''N = int(input()) # 确定将输入N个数for i in range(N): M = int(input()) # 输入的数存入M tnt = 0# 各位数相加之和 loc = 0# 位置while M != 0: loc += 1if loc % 2 == 1: tmp = M % 10 * 7while tmp > 9: tmp = tmp // 10 + tmp % 10 tnt += tmpelse: tnt += M % 10 M //= 10if tnt % 8 == 0: print("T")else: print("F")青少年编程竞赛交流
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),添加小助手微信,让他邀请大家进入学习群。进群之后大家可以参与定期组织的21天刷题打卡、等级考试测评、教育部白名单比赛辅导以及青少年编程组队竞赛等活动。
