2019蓝桥杯第十届JavaB组

本文汇总了2019年JavaB组蓝桥杯编程竞赛的部分试题及解答,涉及数组操作、字符串处理、数列计算、数字分解等多个方面。通过实例代码展示了如何解决这些问题,包括最大评分组合、子串计数、数列求值、特定数字筛选和后缀表达式计算等。
摘要由CSDN通过智能技术生成

2019年javaB组蓝桥杯

试题A:组队

题目描述

作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员, 组成球队的首发阵容。

每位球员担任 1 号位至 5 号位时的评分如下表所示。请你计算首发阵容 1 号位至 5 号位的评分之和最大可能是多少?
在这里插入图片描述

答案:490

试题B.不同的子串:

一个字符串的非空子串是指字符串中长度至少为1 的连续的一段字符组成
的串。例如,字符串aaab 有非空子串a, b, aa, ab, aaa, aab, aaab,一共7 个。
注意在计算时,只算本质不同的串的个数。
请问,字符串0100110001010001 有多少个不同的非空子串?

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

答案:100
利用散列表去重,返回set长度

    public static void main(String[] args) {
        String s="0100110001010001",sa;
        Set<String> set=new HashSet<>();
        for (int i = 0; i < s.length(); i++) {
            for (int j = i+1; j <= s.length(); j++) {
                sa=s.substring(i,j);
                set.add(sa);
            }
        }
        System.out.println(set.size());
    }

试题C:数列求值

题目描述

给定数列 1, 1, 1, 3, 5, 9, 17, …,从第 4 项开始,每项都是前 3 项的和。求 第 20190324 项的最后 4 位数字。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个 4 位整数(提示:答案的千位不为 0),在提交答案时只填写这个整数,填写 多余的内容将无法得分。
答案:4659
求最后四位就取模10000,求最后三位就取模1000,不然数据会溢出

    public static void main(String[] args) {
        int[] a=new int[20190324];
        a[1]=a[2]=a[0]=1;
        for (int i = 3; i < 20190324; i++) {
            a[i]=(a[i-1]+a[i-2]+a[i-3])%10000;
        }
        System.out.println(a[20190323]);
    }

试题D.数的分解:

把2019 分解成3 个各不相同的正整数之和,并且要求每个正整数都不包
含数字2 和4,一共有多少种不同的分解方法?
注意交换3 个整数的顺序被视为同一种方法,例如1000+1001+18 和
1001+1000+18 被视为同一种。

答案:40785

public static void main(String[] args) {
        Set<HashSet<Integer>> set=new HashSet<>();
        int sum=0;
        for (int i = 1; i < 2019; i++) {
            for (int j = i+1; j < 2019; j++) {
                for (int k = j+1; k <2019 ; k++) {
                    if ((i+k+j)>2019)
                        break;
                    if (i+j+k==2019&&a(i)&&a(j)&&a(k))
                        sum++;
                }
            }
        }
        System.out.println(sum);
    }
    public static boolean a(int b){
        String c=String.valueOf(b);
        char ch;
        for (int i = 0; i <c.length() ; i++) {
            ch=c.charAt(i);
            if (ch=='2'||ch=='4')
                return false;
        }
        return true;
    }

在这里插入图片描述

编程题

试题F.特别数的和:

小明对数位中含有2、0、1、9 的数字很感兴趣(不包括前导0),在1 到
40 中这样的数包括1、2、9、10 至32、39 和40,共28 个,他们的和是574。
请问,在1 到n 中,所有这样的数的和是多少?
输入:
输入一行包含一个整数n。
输出:
输出一行,包含一个整数,表示满足条件的数的和。
【样例输入】
40
【样例输出】
574
校验然后累加求和

public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt(),sum=0;
        for (int i = 1; i <= n; i++) {
            if (a(i))
                sum+=i;
        }
        System.out.println(sum);
    }
    public static boolean a(int b){
        String c=String.valueOf(b);
        char ch;
        for (int i = 0; i <c.length() ; i++) {
            ch=c.charAt(i);
            if (ch=='2'||ch=='0'||ch=='1'||ch=='9')
                return true;
        }
        return false;
    }

第I题:后缀表达式

题目描述

给定 N 个加号、M 个减号以及 N + M + 1 个整数 A1,A2,··· ,AN+M+1,小 明想知道在所有由这 N 个加号、M 个减号以及 N + M +1 个整数凑出的合法的后缀表达式中,结果最大的是哪一个?

请你输出这个最大的结果。

例如使用1 2 3 + -,则 “2 3 + 1 -” 这个后缀表达式结果是 4,是最大的。

【输入格式】

第一行包含两个整数 N 和 M。 第二行包含 N + M + 1 个整数 A1,A2,··· ,AN+M+1。

【输出格式】

输出一个整数,代表答案。

【样例输入】

1 1
1 2 3

【样例输出】

4

public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int N=sc.nextInt();
        int M=sc.nextInt(),sum=0;
        int[] a=new int[N+M+1];
        for (int i = 0; i < a.length; i++) {
            a[i]=sc.nextInt();
        }
        Arrays.sort(a);
        int x=0;
        for (int i = a.length-1; i >= 0; i--) {
            if (x<N+1)
                 sum+=a[i];
            x++;
            if(x>N+1)
                sum-=a[i];
        }
        System.out.println(sum);
    }
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值