第十届蓝桥杯javaA组题解(部分题)

试题 A: 平方和

import java.util.Scanner;

public class _7 {
    static long ans=0;
    public static void main(String[] args) {
        for (int i = 1; i <= 2019; i++) {
            String s=i+"";
            if(s.contains("0")||s.contains("2")||s.contains("1")||s.contains("9")){
                ans+=i*i;
            }
        }
        System.out.println(ans);
    }
}

答案:2658417853

试题 B: 数列求值

public class _8 {
    
    public static void main(String[] args) {
        long a=1,b=1,c=1,d=0;
        for (int i = 4; i <= 20190324; i++) {
            d=(a+b+c)%10000;
            a=b;
            b=c;
            c=d;
        }
        System.out.println(d);
    }
}

答案:4659

试题 D: 最大降雨量

这题用嘴数就可以了,因为要的是最大中位数,那就要中位数仅次于大于他的三个数,就从49倒着往前隔三个是一个中位数,一直数到第四个中位数出现就是答案。

答案:34
E不会

以下代码并不能保证过所有测试点。。。奇怪的蓝桥杯系统每次提交都说我内部错误。

试题 F: 完全二叉树的权值

import java.util.Scanner;

public class _3 {static long[] sum=new long[10005];
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int k=1;
        for(;;){
            if((2<<k)-1==n)break;
            else k++;
        }
        int[] a=new int[n+5];
        int len=0;

        for (int i = 0; i < n; i++) {
            a[i]=sc.nextInt();
            if(i<len*2+1)sum[len]+=a[i];
            if(i==len*2+1){
                sum[len]+=a[i];
                len++;
            }
        }
        long max=-1000000000,l=0;
        for (int i = 0; i < k; i++) {
            if(sum[i]>max){
                max=sum[i];
                l=i+1;
            }
        }
        System.out.println(l);
    }
}

试题 G: 外卖店优先级

import java.util.*;

public class _4 {
    static int n,m,t;
    static class info{
        int ts,id;

        public info(int ts, int id) {
            this.ts = ts;
            this.id = id;
        }
    }
    static info[] infos=new info[100005];
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        n=sc.nextInt();
        m=sc.nextInt();
        t=sc.nextInt();
        for (int i = 0; i < m; i++) {
            int ts=sc.nextInt();
            int id=sc.nextInt();
            infos[i]=new info(ts,id);
        }
        Comparator<info> cmp=new Comparator<info>() {
            @Override
            public int compare(info o1, info o2) {
                return o1.ts-o2.ts;
            }
        };
        Arrays.sort(infos,0,m,cmp);
        
        int[] f=new int[n+5];
        TreeSet<Integer> treeSet=new TreeSet<>();
        for (int i = 1; i <= t; i++) {
            for (int j = 1; j <= n; j++) {
                if(f[j]!=0) f[j]--;

            }

            for (int i1 = 0; i1 < m; i1++) {
                if(infos[i1].ts==i){
                    if(f[infos[i1].id]==0)f[infos[i1].id]+=2;
                    else f[infos[i1].id]+=3;
                    if(f[infos[i1].id]>=5)treeSet.add(infos[i1].id);
                }
            }

            for (int j = 1; j <= n; j++) {
                if(f[j]<=3&&treeSet.contains(j)) treeSet.remove(j);

            }

        }
        System.out.println(treeSet.size());
    }
}

试题 H: 修改数组

用“,数字,”可以防止contains找到的是包含它的数字而非本身。

import java.util.Scanner;

public class _5 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int[] a=new int[n+5];
        for (int i = 0; i < n; i++) {
            a[i]=sc.nextInt();
        }
        StringBuilder s= new StringBuilder(","+a[0] + ",");
        for (int i = 1; i < n; i++) {
            while(s.toString().contains(","+a[i]+",")){
                a[i]++;
            }
            s.append(a[i]);
            s.append(",");
        }
        for (int i = 0; i < s.length()-2; i++) {
            if(s.charAt(i)==',')continue;
            System.out.print(s.charAt(i)+" ");
        }
        System.out.println(s.charAt(s.length()-2));
    }
}

J不会

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值