蓝桥杯第二次模拟赛JAVA题解

蓝桥杯第二次模拟赛JAVA题解,第1张

蓝桥杯第二次模拟赛JAVA题解

目录

第一题

第二题

第三题

第四题

第五题

第六题

第七题

第八题

第九题

第十题


第一题

 255

一般来说第一题都是白给的,但是这个题目需要一些计算机网络的知识,不然就真的“白给”了!!!

简单来说一下吧,IPv4中 IP地址是32位二进制表示,分成四段,每段8位二进制,即2的八次方个数,*表示其中的一段,因为是从0开始的,所以最大是255

(个人见解哦,有问题欢迎评论区留言)

第二题

class test2{
    int []a=new int[2040];
    void method(){
        for (int i=2;i<2021;i++){
            if(2021%i==0){
                for(int j=1;i*j<=2021;j++){
                    a[i*j]=1;
                }
            }
        }
        int t=0;
        for(int k=0;k<2040;k++){
            if(a[k]==1)
                t++;
        }
        System.out.println(t);
    }
}

89

这个题目的话没啥难度,直接暴力解,但是我对它题目的表述表示很不理解(g应该是能被A和B整除才对吧!),我看了老半天,一度怀疑自己,不过根据它后面的举例可以明白意思,不影响做题!

第三题

class test3{
    int []a=new int[2030];
    void method(){
        for(int i=1;i<=2021;i++){//这个地方i<=2021加等号主要是因为2021容易被漏掉
            for(int j=1;j<=i;j++){//这个地方要j<=i,主要是i=1的时候容易被漏掉
                for (int k=0;k 

1516

这个题目的话要细心一点,因为很容易做错,容易漏掉1和2021这两个数

第四题

 219

哈夫曼编码题

第五题

class test5{
    void method(){
        String s="FFEEFEAAECFFBDBFBCDA  DACDEEDCCFFAFADEFBBA " +
                " FDCDDCDBFEFCEDDBFDBE  EFCAAEECEECDCDECADDC  DFAEACECFEADCBFECADF  DFBAAADCFAFFCEADFDDA " +
                " EAFAFFDEFECEDEEEDFBD  BFDDFFBCFACECEDCAFAF  " +
                "EFAFCDBDCCBCCEADADAEBAFBACACBFCBABFDAFBEFCFDCFBCEDCEAFBCDBDDBDEFCAAAACCFFCBBAAEECFEFCFDEEDCACDACECFF " +
                " BAAAFACDBFFAEFFCCCDB  FADDDBEBCBEEDDECFAFFCDEAFBCBBCBAEDFDBEBB " +
                "BBABBFDECBCEFAABCBCFFBDBACCFFABEAEBEACBBDCBCCFADDCACFDEDECCCBFAFCBFECAACAFBCFBAF";
        char[] g=s.toCharArray();
        int a=0;
        int b=0;
        int c=0;
        int d=0;
        int e=0;
        int f=0;
        for(int i=0;i 

 直接暴力就完事儿了!!!

第六题

class test6{
    void method(){
        Scanner scanner = new Scanner(System.in);
        int p=scanner.nextInt();
        int t=scanner.nextInt();
        int k=t/12+1;
        System.out.println(p*k);
    }
}

送分题,哈哈✨

第七题

class test7{
    void method(){
        Scanner scanner = new Scanner(System.in);
        int a=scanner.nextInt();
        int b=scanner.nextInt();
        int c=scanner.nextInt();
        int k=Math.max(a,b);
        int j=Math.max(a,c);
        int t=Math.max(k,j);
        if(2*t*t==(a*a+b*b+c*c)) System.out.println("YES");
        else System.out.println("NO");
    }
}

 读完题目,直接暴力,没啥技巧可言,找一个最大边,然后用一下勾股定理就好了路‍♀️

第八题

哈哈哈,这个题目当时没想出来,等考完六级的时候我再仔细思考一下!!

第九题

 

class test9 {
    void method() {
        
        Scanner scanner = new Scanner(System.in);
        int N = 1020;
        double p = Math.pow(10, 9) + 7;
        int h = (int) p;
        int n = scanner.nextInt();
        int[] f = new int[N];
        int k = n / 2;
        for (int i = 1; i <= n; i++) {
            f[0] = 1;
            f[i] = 1;

            for (int j = i - 1; j > 0; j--) {
                f[j] = (f[j - 1] + f[j]) % h;
            }
        }
        System.out.println(f[k]);
    }

    
    void method_2() {
        //推出转态方程后,可以参考蓝桥杯第一次模拟赛中利用杨辉三角求组和数问题的方法
        int p=1000000007;
        int[][] a = new int[1010][1010];
        int t = 1000000007;
        a[0][0] = 1;
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        for (int i = 1; i <= n; i++) {
            a[i][0] = 1;
            for (int j = 1; j <= i; j++) {
             a[i][j]=(a[i-1][j]+a[i-1][j-1])%p;
            }
        }
        System.out.println(a[n][(n+1)/2]);
    }
}

这道题目还是组合数的问题,关键在于找出转态方程,这里我给出了两种解法,第二种解法在我上一篇博客《蓝桥杯第一次模拟赛JAVA题解》的题解中有出现!

第十题

这个题目当时也没在出来,六级考完再仔细想想!! 

裡裡裡裡裡裡裡裡

最后总结如下:

第二次模拟赛比第一次的难度略有提升,不过跟真题比起来还是差点意思,然后我有两题没做出来(我是算法小菜鸡),等六级结束再继续肝算法!!!!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5671059.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存