第十届蓝桥杯JavaB组真题
- 组队
本题总分:5 分
【问题描述】
作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员, 组成球队的首发阵容。 每位球员担任 1 号位至 5 号位时的评分如下表所示。请你计算首发阵容 1 号位至 5 号位的评分之和最大可能是多少?
这个比较简单,可以直接手算,
答案:490
- 不同子串
本题总分:5 分
【问题描述】
一个字符串的非空子串是指字符串中长度至少为 1 的连续的一段字符组成 的串。例如,字符串aaab 有非空子串a, b, aa, ab, aaa, aab, aaab,一共 7 个。 注意在计算时,只算本质不同的串的个数。 请问,字符串0100110001010001 有多少个不同的非空子串?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
答案:100
import java.util.*;
public class demo02 {
public static void main(String[] args) {
// 不同子串
//基本思想,分类讨论:不同位数的字串一共有多少个,用set集合去除重复的子串
Scanner sc=new Scanner(System.in);
String s=sc.next();
Set<String> a=new HashSet<>();
System.out.println(s);
for(int i=1;i<s.length();i++) {
fun(i,a,s);
}
System.out.println(a.size()+1);
}
public static void fun(int n,Set<String> a,String s) {
for (int i = 0; i < s.length(); i++) {
if(i+n<=s.length()) {
System.out.println(s.substring(i,i+n));
a.add(s.substring(i,i+n));
}
else
break;
}
}
}
- 数列求值
本题总分:10 分
【问题描述】
给定数列 1, 1, 1, 3, 5, 9, 17, …,从第 4 项开始,每项都是前 3 项的和。求 第 20190324 项的最后 4 位数字。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个 4 位整数(提示:答案的千位不为 0),在提交答案时只填写这个整数,填写 多余的内容将无法得分。
答案:4659
public class demo03 {
public static void main(String[] args) {
// 数列求值
long[] a=new long[20190324];
a[0]=1;
a[1]=1;
a[2]=1;
for(int i=3;i<a.length;i++) {
if(a[i-1]>9999) {
a[i-1]=a[i-1]%10000;
}
a[i]=a[i-1]+a[i-2]+a[i-3];
}
System.out.println(a[20190323]);
}
}
- 数的分解
本题总分:10 分
【问题描述】
把 2019 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包 含数字 2 和 4,一共有多少种不同的分解方法? 注意交换 3 个整数的顺序被视为同一种方法,例如 1000+1001+18 和 1001+1000+18 被视为同一种。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
答案:40785
public class demo04 {
public static void main(String[] args) {
//数的分解
//ABC有六种排列方式,故最后要除以6,来去掉重复的方法
int sum=0;
for(int i=1;i<2019;i++) {
for(int j=1;j<2019;j++) {
int k=2019-i-j;
if(k>0&&i!=j&&j!=k&&i!=k) {
if(
(!(i+"").contains("4")&&!(i+"").contains("2"))
&&(!(j+"").contains("4")&&!(j+"").contains("2"))
&&(!(k+"").contains("4")&&!(k+"").contains("2"))
)
sum++;
}
}
}
System.out.println(sum/6);
}
}