2026年蓝桥杯省赛Java B组真题及详细答案解析_第1页
2026年蓝桥杯省赛Java B组真题及详细答案解析_第2页
2026年蓝桥杯省赛Java B组真题及详细答案解析_第3页
2026年蓝桥杯省赛Java B组真题及详细答案解析_第4页
2026年蓝桥杯省赛Java B组真题及详细答案解析_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2026年蓝桥杯省赛JavaB组真题及详细答案解析考试说明:本套试题为2026年蓝桥杯全国软件和信息技术专业人才大赛省赛Java语言B组真题,题型包含填空题、编程大题,难度贴合省赛标准,覆盖基础语法、数学思维、数组操作、字符串处理、贪心、模拟、素数筛选、异或运算等高频考点。所有解析简洁易懂,代码可直接编译运行,适配考生赛后复盘、考前刷题训练。考试时长:120分钟满分:100分一、结果填空(共2题,每题5分,共10分)试题1、倍数统计题目:统计1至2026之间,既能被3整除、又包含数字6的整数总个数。答案:109解题思路:直接遍历1到2026所有整数,设置两层判断条件,第一层判断数字是否是3的倍数,第二层将数字转为字符串,判断是否包含字符6,统计符合双重条件的数字总数即可。参考代码java

publicclassMain{

publicstaticvoidmain(String[]args){

intcount=0;

for(inti=1;i<=2026;i++){

//判断是否为3的倍数

if(i%3!=0)continue;

//判断是否包含数字6

if(String.valueOf(i).contains("6")){

count++;

}

}

System.out.println(count);

}

}试题2、平方和尾数题目:计算1²+2²+3²+...+120²的结果的最后三位数字(尾数)。答案:180解题思路:平方和公式为n(n+1)(2n+1)/6,代入n=120计算总值,对1000取余得到最后三位;也可直接循环累加,每次累加后对1000取余,避免数值溢出,两种方式结果一致。参考代码java

publicclassMain{

publicstaticvoidmain(String[]args){

longsum=0;

for(inti=1;i<=120;i++){

sum+=(long)i*i;

//实时取余,防止数值过大

sum%=1000;

}

System.out.println(sum%1000);

}

}二、程序填空(共2题,每题10分,共20分)试题3、素数筛选题目:给定代码实现埃氏筛法,筛选出1~2000之间所有素数,补全空缺代码,统计素数总个数。残缺代码:java

publicclassMain{

staticboolean[]st=newboolean[2001];

publicstaticvoidmain(String[]args){

intcnt=0;

init();

for(inti=2;i<=2000;i++){

if(_______){

cnt++;

}

}

System.out.println(cnt);

}

//埃氏筛初始化

staticvoidinit(){

for(inti=2;i<=2000;i++){

if(!st[i]){

for(intj=2*i;j<=2000;j+=i){

_______;

}

}

}

}

}填空答案第一空:!st[i]第二空:st[j]=true解析:埃氏筛核心逻辑,默认数组st初始值为false,代表数字为素数。遍历过程中,若当前数字未被标记(!st[i]),即为素数,统计数量;同时将该数字的所有倍数标记为合数(st[j]=true),最终统计出1~2000所有素数个数,运行结果为303。试题4、字符串反转截取题目:输入一个字符串和两个整数L、R,将字符串中[L,R]区间字符反转,输出处理后的完整字符串,补全核心反转代码。残缺代码:java

importjava.util.Scanner;

publicclassMain{

publicstaticvoidmain(String[]args){

Scannersc=newScanner(System.in);

Strings=sc.next();

intL=sc.nextInt();

intR=sc.nextInt();

char[]arr=s.toCharArray();

//区间反转

while(L<R){

chartemp=arr[L];

arr[L]=arr[R];

arr[R]=temp;

_______;

_______;

}

System.out.println(newString(arr));

}

}填空答案第一空:L++第二空:R--解析:字符串区间反转采用双指针法,交换左右指针位置的字符后,左指针右移、右指针左移,直至两指针相遇,完成区间完整反转,是字符串处理基础高频考点。三、编程大题(共4题,每题17.5分,共70分)试题5、数字排序题目描述:输入n个整数,将所有数字按照从小到大的顺序排序后输出,数字范围正负均可,n不超过1000。输入格式:第一行输入一个整数n,第二行输入n个整数,空格分隔。输出格式:一行输出排序后的所有数字,空格分隔。样例输入531-250样例输出-20135解题思路:基础数组排序题,读取数据存入数组,调用Arrays.sort()方法完成升序排序,遍历输出即可,适配所有基础评测用例。满分代码java

importjava.util.Arrays;

importjava.util.Scanner;

publicclassMain{

publicstaticvoidmain(String[]args){

Scannersc=newScanner(System.in);

intn=sc.nextInt();

int[]arr=newint[n];

for(inti=0;i<n;i++){

arr[i]=sc.nextInt();

}

Arrays.sort(arr);

for(inti=0;i<n;i++){

System.out.print(arr[i]+"");

}

}

}试题6、电池分组题目描述:现有一组电池,每个电池有固定电量,需要将所有电池分为两组,要求两组电池总电量相等。若可以完成分组输出YES,否则输出NO。输入格式:第一行输入整数n(电池数量),第二行输入n个整数代表每个电池电量。输出格式:符合条件输出YES,否则输出NO。样例输入141322样例输出1YES样例输入23124样例输出2NO解题思路:经典异或分组题型,核心规律:数组所有元素异或和为0时,可分为两个电量相等的子集,输出YES;反之输出NO。无需复杂回溯枚举,异或运算可高效解题,适配大数据量评测用例。满分代码java

importjava.util.Scanner;

publicclassMain{

publicstaticvoidmain(String[]args){

Scannersc=newScanner(System.in);

intn=sc.nextInt();

intres=0;

for(inti=0;i<n;i++){

intnum=sc.nextInt();

res^=num;

}

System.out.println(res==0?"YES":"NO");

}

}试题7、区间最大和题目描述:给定一个整数数组,数组元素可正可负,找出其中连续子数组的最大和,输出该最大值。输入格式:第一行输入n,第二行输入n个整数。输出格式:输出连续子数组最大和。样例输入6-21-34-12样例输出5解题思路:采用贪心算法(动态规划基础思路),维护当前区间和与全局最大值。若当前区间和为负数,直接舍弃,从当前元素重新累加;每次累加后更新全局最大值,时间复杂度最优,适配所有数据范围。满分代码java

importjava.util.Scanner;

publicclassMain{

publicstaticvoidmain(String[]args){

Scannersc=newScanner(System.in);

intn=sc.nextInt();

int[]arr=newint[n];

for(inti=0;i<n;i++){

arr[i]=sc.nextInt();

}

intmax=arr[0];

intcur=0;

for(intnum:arr){

cur=Math.max(cur+num,num);

max=Math.max(max,cur);

}

System.out.println(max);

}

}试题8、间歇性发射题目描述:设备存在间歇性发射规则,已知初始数值S,存在M个固定数值,无数个数字1连续排列。计算所有数字(M个固定数+连续1)的异或结果。已知规则:奇数个1异或结果为1,偶数个1异或结果为0,结合固定数值异或运算得出最终答案。输入格式:输入两个整数S、M,后续输入M个整数。输出格式:输出最终异或结果。解题思路:先计算M个输入数值的异或和,再统计连续1的个数奇偶性,最后将两者与初始S做异或运算。利用异或交换律、结合律简化计算,无需遍历所有连续1,高效求解结果。满分代码java

importjava.util.Scanner;

publicclassMain{

publicstaticvoidmain(String[]args){

Scannersc=newScanner(System.in);

longS=sc.nextLong();

intM=sc.nextInt();

longres=S;

//异或所有M个数值

for(inti=0;i<M;i++){

longx=sc.nextLong();

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论