2025年北京市海淀区中小学生信息学竞赛第三赛段-入门组真题
剩余时间 --:--:--
问答题 共 6 题
1.

制作饮品(drink.cpp)

题目描述

圣诞节快到了,有 n 名同学参加一项联欢活动,为了丰富活动内容,组织者增加了一个自制饮品的环节。在这个环节中,活动策划者准备了一些原料,要求每名同学恰好制作 x 杯指定规格的饮品。你的任务是根据给定的原料数量,确定 x 的最大值。

活动策划者准备的原料有:k 瓶饮料,每瓶饮料 l 毫升;c 个柠檬,每个柠檬切成了 d 片;p 克食盐。饮品的指定规格为:每杯饮品包含 v₁毫升饮料、1 片柠檬和 p₁克食盐。

输入描述

在一行中给出 8 个正整数 n、k、l、c、d、p、v₁、p₁,这些数均不小于 1 且不超过 100,两两之间用一个空格分隔。

输出描述

输出 x 的最大值(即每名同学最多能制作的饮品杯数)。

输入输出样例

输入
输出
3 4 5 10 8 100 3 1
2
5 100 10 1 1 990 4 3
3
10 1000 1000 25 23 150 1
0
2.

比赛晋级(match.cpp)

题目描述

圣诞节的联欢活动有一个趣味运动比赛,参加比赛的每名同学都能获得一份圣诞大礼包,同时比赛采用特殊的晋级机制,能晋级到下一轮的同学将获得额外惊喜礼包。晋级规则为:参加本轮比赛的 n 名同学(编号 1 到 n),第 i 名同学得分为 aᵢ,指定编号为 k 的同学,以他的得分 aₖ为基准,满足得分不低于 aₖ且得分为正的同学将晋级。你的任务是确定能获得晋级礼包的同学数量。

输入描述

第一行包含两个整数 n 和 k(1≤k≤n≤50);第二行包含 n 个以空格分隔的整数 a₁、a₂、…、aₙ(0≤aᵢ≤100),序列是非递增的(a₁≥a₂≥…≥aₙ)。

输出描述

输出晋级的同学数量。

输入输出样例

输入
输出

8 5 

10 9 8 7 7 7 5 5

6

4 2 

0 0 0 0

0


3.

素数和回文数(num.cpp)

题目描述

圣诞节联欢活动上有一个找数游戏。定义:

  • 质数(素数):大于 1 的正整数,不能被除自身和 1 以外的任何正整数整除;
  • 回文数:正整数的十进制表示无前置零,且从左到右与从右到左读相同;
  • f (n):不大于 n 的质数个数;
  • g (n):不大于 n 的回文数个数。给定系数 A = p/q(p、q 为正整数),找出最大的正整数 n,使得 f (n) ≤ A×g (n)。若不存在则输出 0。

输入描述

输入一行包含两个正整数 p 和 q(p, q ≤10²,p≤42),分别为 A 的分子和分母。

输出描述

输出满足条件的最大 n,若无则输出 0。

输入输出样例

输入
输出
1 1
40
1 42
1
6 4
172


4.

摧毁积木塔(tower.cpp)

题目描述

圣诞节联欢活动有拆积木塔游戏。n 座积木塔(编号 1~n),第 i 座塔高度为 hᵢ(由 hᵢ个正方体积木组成,长和宽均为 1)。积木块分为:

  • 内部块:上下左右四个方向均有相邻积木块或地面;
  • 边界块:非内部块。每次操作摧毁当前所有边界块,求摧毁所有积木块所需的操作次数。

输入描述

第一行包含整数 n(1≤n≤1e5);第二行包含 n 个整数 h₁、h₂、…、hₙ(1≤hᵢ≤1e5),表示每座塔的高度。

输出描述

输出所需操作次数。

输入输出样例

输入
输出

2 1 4 6 2 2

3

7

 3 3 3 1 3 3 3

2

说明:

样例1解释:

每次边界块都用红色标记。第一次操作后,还剩下四个块,第二次操作后只剩下一个。这最后一个块在第三次操作中被摧毁。

5.

制作蛋糕(cake.cpp)

题目描述

圣诞节联欢活动有制作蛋糕环节。每个同学获得 n 种食材(编号 1~n),第 i 种食材的量为 bᵢ克,另有 k 克万能粉(1 克万能粉可代替 1 克任意食材)。制作一个蛋糕需要第 i 种食材 aᵢ克(必须使用所有食材),求最多能制作的蛋糕个数。

输入描述

第一行包含两个正整数 n 和 k(1≤n≤1e5,1≤k≤1e3);第二行包含 n 个整数 a₁、a₂、…、aₙ(1≤aᵢ≤1e3),表示每个蛋糕所需第 i 种食材的量;第三行包含 n 个整数 b₁、b₂、…、bₙ(1≤bᵢ≤1e3),表示每个同学获得第 i 种食材的量。

输出描述

输出最多能制作的蛋糕个数。

输入输出样例

输入
输出

1 1000000000 

1000000000

2000000000

10 1 

1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 

1000000000 1000000000 1000000000 1000000000 

1 1 1 1 1 1 1 1 1 1

0

3 1 

2 1 4 

11 3 16

4

4 3 

4 3 5 6

 11 12 14 20

3


6.

函数的和(sum.cpp)

题目描述

圣诞节联欢活动有一道数学思维题。给定两个长度为 n 的数组 a 和 b,定义函数 f (L, r) = Σ(aᵢ×bᵢ)(i 从 L 到 r)。重新排列数组 b 的元素,使得 Σf (L, r)(1≤L≤r≤n)的值尽可能小,答案对 998244353 取模后输出。

输入描述

第一行包含整数 n(1≤n≤2e5);第二行包含 n 个整数 a₁、a₂、…、aₙ(1≤aᵢ≤1e5);第三行包含 n 个整数 b₁、b₂、…、bₙ(1≤bᵢ≤1e5)。

输出描述

输出最小的 Σf (L, r) 值(对 998244353 取模)。

输入输出样例

输入
输出

1 8 7 2 4 

9 7 2 9 3

646

1000000 

1000000

757402647

1 3 

4 2

20


C++ 编辑器
输入
输出