- 1
- 0
- 约1.42万字
- 约 17页
- 2026-01-13 发布于江苏
- 举报
2025年第十四届蓝桥杯B组题目及答案
考生须知:
1.考试时间为4小时,选手需在规定时间内完成题目并提交答案,以最后一次提交为准。
2.试题包含“结果填空”和“程序设计”两种题型:结果填空题直接填写最终结果,无需提交源代码;程序设计题需提交可运行的源代码,确保对给定输入能正确输出。
3.程序设计题提交要求:主类名必须为Main,不得使用package语句,仅可使用编程语言自带类库,源代码需完整包含import语句(若有)。
4.评卷时使用的输入数据可能与示例数据不同,程序需保证通用性,不得仅适配示例数据。
说明:本套题目适配Java/C++/Python三种主流编程语言,答案部分提供Java实现代码(其他语言可参考解题思路适配),涵盖模拟、贪心、动态规划、搜索、数学运算等核心考点,难度符合蓝桥杯B组赛事要求,适用于赛前强化训练。
第一部分结果填空题(共5题,每题10分)
试题A:平方和计算
题目描述:计算所有≤2025的正整数中,能被3或5整除的数的平方和。
答案:9560775
解题思路:遍历1到2025的所有正整数,判断每个数是否能被3或5整除,若满足条件则计算其平方并累加。需注意使用长整型(long)存储累加结果,避免整数溢出。
参考代码(Java):
publicclassMain{
publicstaticvoidmain(String[]args){
longsum=0;
for(inti=1;i=2025;i++){
if(i%3==0||i%5==0){
sum+=1L*i*i;//强制转换为long避免溢出
}
}
System.out.println(sum);//输出结果:9560775
}
}
试题B:纸牌合并最小代价
题目描述:有N张编号为1到N的纸牌,每次从中选取两张合并为一张新牌,合并的代价等于两张纸牌编号之和。重复此操作直至只剩下一张纸牌,求合并所有纸牌的最小总代价(N=1000)。
答案:798000
解题思路:本题为经典哈夫曼编码问题,核心策略是每次选取当前最小的两张纸牌合并,可通过小根堆(优先队列)高效维护当前纸牌集合。每次取出两个最小值,计算代价后将新牌重新加入堆中,重复至堆中只剩一张牌,累加所有代价即为最小总代价。
参考代码(Java):
importjava.util.PriorityQueue;
publicclassMain{
publicstaticvoidmain(String[]args){
intN=1000;
PriorityQueuelt;Integergt;minHeap=newPriorityQueue();
for(inti=1;i=N;i++){
minHeap.offer(i);
}
longtotalCost=0;
while(minHeap.size()1){
inta=minHeap.poll();
intb=minHeap.poll();
intcost=a+b;
totalCost+=cost;
minHeap.offer(cost);
}
System.out.println(totalCost);//输出结果:798000
}
}
试题C:三维坐标三元组计数
题目描述:在三个坐标系A、B、C中各有500个点,每个点的坐标为(x,y,z)(整数)。统计满足“点A到原点的距离=点B到原点的距离=点C到原点的距离”的三元组(Ai,Bj,Ck)的数量。(注:距离计算可简化为平方距离,避免浮点数误差,即x2+y2+z2)
答案:1268
解题思路:首先预计算三个坐标系中每个点到原点的平方距离,存储在三个数组中。然后通过三重循环枚举所有三元组,利用平方距离相等的条件筛选有效三元组。为优化效率,可先枚举前两个坐标系的点,记录距离相等的配对,再在第三个坐标系中统计相同距离的点的数量,减少循环次数。
参考代码(Java):
publicclassMain{
staticclassPoint{
intx,y,
原创力文档

文档评论(0)