文档内容
2025年五年级竞赛数学试卷【“思维100”STEM 应用能力科教活动
(春季)初赛&决赛真题】-学生用卷
1、根据以下流程图,当输入数值A=462,B=2024时,输出数值是 .
2、根据以下流程图,当输入数值a=2024,b=230时,输出结果是 .
3、在科普读物上思思了解到有一种物质,每经过1年其质量会减半.如果有100克该物质,经
过 年后剩余物质就会少于0.05克.
第1页, 共9页4、有一排植物,它们的初始高度为1厘米、3厘米、5厘米、7厘米、9厘米.有一种营养液可以使
植物长高,但每次只能针对当前最矮的一棵植物,使它长高10厘米.至少使
用 次营养液,才会有一棵植物的高度不低于2024厘米.
5、有两个质数X和Y,已知X小于Y,且X和Y的总和为128.符合要求的(X,Y)共
有 种可能.
6、某个国家的奥运代表队,由运动员和教练员组成.运动员总人数正好和教练员总人数相等,女
生人数恰好是总人数的三分之一,男生运动员有35人.这个国家的奥运代表队总人数至少
有 人.
7、如下图,一堵墙垂直地竖立在湖边,湖水的深度AB为10分米.有一根木杆MN的一端靠着墙
上,另一端插在湖水中,MN的长度为50分米.MN上靠近点N的三等分点处绑了一个特殊的炸
药,只要被浸没在湖水内部,炸药就会爆炸(在水平面边界上还不会爆炸).一只水老鼠被绑在
木杆的点N处,它想去吃远处的奶酪,所以它会拉着木杆进行移动.为了能够吃到奶酪,并且不引
爆炸药,那么奶酪离开墙的距离最多为 分米.
8、将5个红球和5个蓝球排成一行,要求不存在三个相邻的同色球,不同的排法
有 种.
9、在高铁的线上选座系统里,有3排共15个座位可以考虑,如图所示.已知有6个座位已经被占,
那么被占座位有 种可能情况,使得剩余座位里还能选到左右2个相邻座
位.注意: C和D不算相邻.
第2页, 共9页10、正方形ABCD边长为12,甲、乙两人沿着正方形的轮廓匀速行走.甲从A出发顺时针行走,
乙从B出发逆时针行走,已知甲的速度是乙的3倍.他们第10次的相遇点为X,第2024次的相遇点
为Y.线段AY和BX的交点是Z,正方形被分成四块区域.这四块区域中,面积最小的区域,其面
积是 ; 面积最大的区域,其面积是 .
11、一共有17名学生参加了一次测评,测评结束后,老师让这17名学生猜测这次测评的平均分.
小明的得分是100分,他猜测这次测评的平均分是97分.剩下的16名学生都猜测测评的平均分是
n 86
30+ 分,其中n表示这个学生的得分.比如小红的得分是86分,她就猜测平均分是30+ =73
2 2
92
分.小桐的得分是92分,她就猜测平均分是30+ =76分.若这17名学生各自猜测的平均分的平
2
均数,和这次测评的平均分相等,则这次测评的平均分为 分.
12、S(N)表示正整数N的数字之和,比如S(123)=1+2+3=6.若p是三位素数,满足
S(p)=S(p2 ),则p的最小值为 .
13、在一款电脑游戏中,共有8只怪兽,编号1~8.两位玩家轮流选择打怪目标,甲先行动.若甲
玩家消灭了i号怪兽,甲会获得xi枚金币; 若乙玩家消灭了i号怪兽,乙会获得yi枚金币,具体信息
如下.两位玩家的目标都是希望游戏结束后自己的金币数减去对方的金币数尽可能大.已知两位
第3页, 共9页玩家都足够聪明,那么最后获得更多金币的是 (填“甲”或“乙”),两
人的金币数量相差 枚.
14、如图,10×9的方阵中有部分黑色区域,用2×1的瓷砖(瓷砖可以旋转)去覆盖这个方阵,要
求所有瓷砖都正好覆盖10×9方阵中的两小格,黑色区域不能被覆盖住,而且两块瓷砖不能同时覆
盖同一个小方格.最多能放入 块瓷砖.
15、如图,将1、2、3、4、5、6、7、8填入正八边形的八个顶点处(每个顶点写一个数),再将
1、2、3、4、5、6、7、8填入正八边形的八条边上(每个边上写一个数),要求:
(1)如果一条边的两个端点处所写的数之和为偶数,则这条边上写的数也必须为偶数;
(2)如果一条边的两个端点处所写的数之和为奇数,则这条边上写的数也必须为奇数.
如果两种填法旋转后相同,认为是同一种填法; 如果两种填法翻折后相同,认为是不同的填法.
一共有N种不同的填法,则N的末两位数字为 .
16、给定一个长度为n的非负整数数组height,其中每个元素表示宽度为1的柱子的高如下图是由
数组height=[0,1,0,2,1,0,1,3,2,1,2,1]表示的高度,黑色部分为柱子.在下了足够大的雨之后,柱
第4页, 共9页子与柱子之间将承接一些雨水(蓝色部分表示雨水).图中的情况下,这些柱子可以接6个单位的
雨水.
对于给定的数组,如何计算这些柱子排列能够接住多少单位的雨水? 最直接的方法是先计算每一列
雨水的高度(宽度都为1),然后把所有雨水列的高度都加起来,就是所有雨水的容量了.那如何计算
每一列雨水的高度呢?可以从图中看出,每一列雨水的高度,取决于该列左侧最高的柱子和右侧最
高的柱子中,较矮的那个柱子的高度,与该列柱子高度的差.例如下图,我们来计算列4雨水的高
度.
列4两侧寻找高度最大的列
列4左侧最高的柱子是列 ,高度为 .
列4右侧最高的柱子是列 ,高度为 .
列4柱子的高度为 ,那么列4的雨水体积
为 .
17、按照上一题的算法,当height=[4,2,0,3,2,5] 时,能接住的雨水的体积
是 .
18、上面的暴力算法,随着数组中的元素数量增多,计算会变得复杂.现在我们用单调栈解法来
优化这个算法.单调栈就是不仅要保持栈的特性(先进后出),还要保证栈内元素有序.单调栈
第5页, 共9页通常是一维数组.如下图,只有比栈顶元素小的元素才能直接进栈,否则需要先将栈中比当前元
素小的元素出栈,再将当前元素入栈.这样就保证了栈中保留的都是比当前入栈元素大的值,并
且从栈顶到栈底的元素值是单调递增的.
从栈头(元素从栈头弹出)到栈底的顺序是从小到大的顺序.其中栈中的数字表示柱子的高度,
一旦发现添加的柱子高度大于栈头元素了(3>1),就表明出现凹槽了,而栈头元素(1)就是凹槽底
部的柱子,如图中“雨水”的部分,栈头第二个元素就是凹槽左边的柱子(2),添加的元素(3)就是
凹槽右边的柱子.
栈里存放各个柱子的下标index,通过下标即可通过访问数组height来得到柱子下标对应的高度.
当我们遍历每一个柱子时,会出现三种情况:
(1)当前遍历的元素(柱子)高度小于栈顶元素的高度: 此时要把这个元
素 .
A. 压入 B. 弹出
(2)当前遍历的元素(柱子)高度等于栈顶元素的高度: 此时要更新栈顶元素下标,因为遇到相
同高度的柱子,需要使用最右边的柱子来计算宽度.
(3)当前遍历的元素(柱子)高度大于栈顶元素的高度: 此时就出现凹槽了.
我们取栈顶元素,即将栈顶元素弹出,这个就是凹槽的底部,也就是中间雨水的位置,对应的下
标记为mid,对应的高度为height[mid](即为上图中的高度1).此时的栈顶元素st.top(),就
是凹槽的左边位置,下标为st.top(),对应的高度为height[st.top()].
当前遍历的元素i,就是凹槽右边的位置,下标为i,对应的高度为height[i](即为上图中的高度3
).则用height[st.top()]、height[i]、height[mid]表示的雨水高度为
min(height[st.top()],height[i])−height[mid],雨水的宽度为: i−st.top()−1.
第6页, 共9页根据上述单调栈的算法,当输入为height=[3,4,1,3,3,4,1,1,3,2,3,3]时,能接住的雨水的体积
是 .
19、“重复的子字符串”问题是指,给定一个非空的字符串,判断它是否可以由它的一个子串重
复多次构成.其中给定的字符串只含有小写英文字母,并且长度不超过10000.下面是一些例子:
示例 1: 输入: "abab",输出: True,解释: 可由子字符串"ab"重复两次构成.
示例 2: 输入: "aba",输出: False.
(1) 最暴力简单的方法是可以通过以下几个步骤来判断一个字符串是否可以由其子串重复多次构
成.
①观察字符串长度: 假设字符串的长度为n.如果存在重复的子字符串,则这个子字符串的长度一
定是n的因数.
②寻找因数: 找到所有可能的子字符串长度,这些长度是n的因数.例如: 如果n是6,则可能的子字
符串长度有1、2、3和6.
③构建重复字符串: 对于每一个因数长度len,提取字符串的前len个字符作为候选子串.将这个候
选子串重复(n/len)次,构造一个新字符串.
④比较字符串: 如果构造的字符串与原字符串相等,则原字符串可以由该子串重复构成,返回True
.如果没有任何候选子串能构成原字符串,则返回False.
如果现在有一个长度为8的字符串,且我们选择的候选子串长度为4,那么该字符串是候选子串重
复 次构造而成.
(2) 这样的算法运行效率太低了,我们考虑更加高效的算法.KMP(Knuth−Morris−Pratt)算法
是一种用于字符串匹配的高效算法,它可以帮助我们判断一个字符串是否包含另一个字符串.下
面是KMP算法的原理.
①计算最长前缀后缀数组(LPS数组)
最长前缀:指的是字符串中,从起始位置到当前字符位置的所有字符中,与当前字符及其之前的
部分相同的最大长度的前缀.
最长后缀:指的是字符串中,从当前字符位置到结束位置的所有字符中,与当前字符及其之前的
部分相同的最大长度的后缀.
LPS数组的计算:对于每个字符,LPS数组中的值表示在该位置的字符串中,最长的可匹配前缀
和后缀的长度.可以通过维护一个指针,逐个比较字符,并在匹配时更新LPS值.具体步骤请参
考下文的示例.
②判断重复子字符串
第7页, 共9页计算字符串的LPS数组后,检查字符串的最后一个字符的LPS值(假设为LPS[n−1]).如果字
符串的长度n减去LPS[n−1]的值能整除n,则说明字符串可以由重复的子串构成.
我们以字符串"abab"为例,逐步说明KMP算法的应用.
①计算LPS数组:对于"abab",我们依次计算每个字符的LPS值.
LPS[0]=0:字符串的第一个字符是"a",没有任何字符可以构成前缀和后缀,因此没有相同的前
缀和后缀,LPS值为0.
LPS[1]=0:字符串的前两个字符是"ab",目前考虑的前缀是"a",后缀是"b",这两个 部分没有
任何相同的部分,因此LPS值仍然为0.
LPS[2]=1:字符串的前3个字符是"aba",前缀部分为"a",后缀部分为"a"(考虑到后缀从字符
串开头到当前字符位置的部分),由于它们相同,最长的可匹配前缀和后缀的长度为1,因此LPS值
为1.
LPS[3]=2:字符串的前4个字符是"abab",前缀部分为"ab",后缀部分也是"ab",这两个部分相
同,所以最长可匹配前缀和后缀的长度为2,因此LPS值为2.
于是我们得到LPS数组为[0,0,1,2].
②判断是否可以由子串重复构成:计算n−LPS[n−1]=4−2=2,4%2==0,所以可以确认字符
串"abab"是由子串"ab"重复构成的.
现在,有一个字符串的长度为6,且最后一个字符的LPS值为4,那么该字符串是由其子串重
复 次构造而成.
(3) 请你使用KMP算法计算字符串"ababab"的LPS数组:
LPS[0]= ,LPS[1]= ,LPS[2]=
,LPS[3]= ,LPS[4]=
,LPS[5]= .
第8页, 共9页1 、【答案】 22;
2 、【答案】 46;
3 、【答案】 11;
4 、【答案】 1008;
5 、【答案】 3;
6 、【答案】 72;
7 、【答案】 40;
8 、【答案】 84;
9 、【答案】 4997;
10 、【答案】 4.5;85.5;
11 、【答案】 62;
12 、【答案】 199;
13 、【答案】 甲;7;
14 、【答案】 36;
15 、【答案】 92;
16 、【答案】 3;2;7;3;1;1;
17 、【答案】 9;
18 、【答案】 A, 10
;
19 、【答案】 (1) 2;
(2) 3;
(3) 0;0;1;2;3;4;
第9页, 共9页