全国青少年信息素养大赛 2023年Python复赛真题

weixin_53507817 2024-07-13 16:05:02 阅读 59

Python智能算法挑战复赛⼩学组

(总共 4 道题)

1. 捡⽯头

【题⽬描述】

⼩强在河边捡了 2 块漂亮的⽯头,他想再捡两块⽯头,让这 4 块⽯头的质量正好 为 30 ⽄,并

块⽯头的质量之间的数字,请编程 输出第 3 块和第 4 块⽯头的质量。注:每个⽯头的重量都

输出 0 0。

【输⼊格式】

输⼊ 2 个数,数与数之间以空格间隔,表示 2 块⽯头的质量。

【输出格式】

输出表示第 3、4 块⽯头的质量的所有可能结果,每块⽯头质量的数字⽤空格隔 开。多组结

分⾏输出。

【样例输⼊】(测试数据不包含本样例)

1 11

【样例输出】

8 10

9 9

2. 判断数字出现了⼏次

【题⽬描述】

给定⼀个正整数n,判断从 1 到这个数本身的所有数中,⼀共出现了多少次数字 k。

【输⼊格式】

输⼊共 1 ⾏,包括⼀个正整数 n 和⼀个正整数 k。(0<n<32767,0<k<10) 【输出格式】

输出共 1 ⾏,⼀个整数,表示 1 到 n 之间的所有数 (包括n),⼀共出现了⼏次k。 【样例输

13 3

【样例输出】

2

3. 滑雪板打包问题

【题⽬描述】

⼀家新开业的滑雪场,需要采购不同规格的滑雪板,每个滑雪板的⻓度是不固定 的,现在需要把排列好

每次快递的总重 量是有限制的,不能超过重量 G。只要每次打包的重量不超过 G,多个滑雪板可以摞

个⽊板进⾏固定。假设,给出排列好的 每个滑雪板的重量 Gi ,和⻓度 Li ,请计算需要最少多⻓的⽊板

【输⼊格式】

输⼊的第⼀⾏有两个数字,⼀个是滑雪板的个数,⼀个是包裹总重量。 以下滑雪板个数⾏,每⾏的第⼀

【输出格式】

输出需要最少的⽊板的总⻓度。注:每次打包需要 2 个⽊板。

【样例输⼊】(测试数据不包含本样例)

5 5

2 1

1 2

# 计算从 1 到 n 之间⼀共出现了⼏次数字 k

occurrences = count_occurrences(n, k)

print(occurrences)

1 3

2 3

2 2

【样例输出】

10

4. 统计考试成绩

【题⽬描述】

期末考试结束了,⽼师要统计班⾥学⽣的考试成绩分布,已知每个同学的考试 成绩为在 0 到 100 分之

成绩,计算出在 平均成绩 (成绩平均值向下取整) 之上的 (⼤于等于平均成绩) 和在平均成绩之下 的 (⼩

【输⼊格式】

第⼀⾏ n 为学⽣成绩个数,0<n<50。

第⼆⾏,由空格隔开的每个同学的成绩,为 1 到 100 间的整数。 【输出格式】

两个整数,由空格隔开,为平均分以上⼈数和平均分以下⼈数。 【样例输⼊】(测试数据不包含本样例

12

100 80 93 66 73 50 96 100 84 47 97 71

【样例输出】

答案解析:

要解决这个问题,我们可以按照以下步骤进⾏:

1. ⾸先,获取学⽣成绩的个数 n。

2. 然后,输⼊每个同学的成绩,并计算总分。

3. 计算平均分(向下取整)。

4. 遍历每个同学的成绩,统计平均分以上和平均分以下的⼈数。

5. 输出平均分以上和平均分以下的⼈数。

下⾯是⼀个解决该问题的 Python 代码示例:

import math

# 输⼊学⽣成绩个数

n = int(input())

# 输⼊每个同学的成绩,并计算总分

scores = list(map(int, input().split()))

total_score = sum(scores)

# 计算平均分(向下取整)

average_score = math.floor(total_score / n)

在这个示例中,我们⾸先输⼊学⽣成绩的个数 n,并将每个同学的成绩存储在列表 scores 中。然后,

接下来,我们计算平均分(向下取整),使⽤ math.floor 函数来实现向下取整。

然后,我们遍历每个同学的成绩,统计平均分以上和平均分以下的⼈数,并将结果存储在变

量 above_average_count 和 below_average_count 中。

最后,我们输出平均分以上和平均分以下的⼈数。

请注意,以上示例代码是使⽤ Python 编写的。如果您希望在其他编程语⾔中实现相同的功能,请根据

# 统计平均分以上和平均分以下的⼈数

above_average_count = 0

below_average_count = 0

for score in scores:

 if score >= average_score:

 above_average_count += 1

 else:

 below_average_count += 1

# 输出平均分以上和平均分以下的⼈数

print(above_average_count, below_average_count)

更多青少年编程比赛、考级真题,可登录模拟系统在线测试(支持PC、移动端)免费试用

少儿编程在线评测考试系统_码培编程



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。