蓝桥杯2020Java组省赛模拟赛

4个填空6个编程题
最后两个编程题依然难度较大。
第8题仔细琢磨应该可以做出来。

1.蓝桥杯2020Java组省赛模拟赛_第1张图片
解析:考察递归

public static int count=0,n=4;
    public static void main(String[] args) {
        fun(0,0);
        System.out.println(count);
    }
    public static void fun(int left, int right){
        if(left==n){
            count++;
            return;
        }
        fun(left+1,right);
        if(left > right){
            fun(left,right+1);
        }
    }

2.蓝桥杯2020Java组省赛模拟赛_第2张图片
解析:考察全排列(注意有两个字母AA(重复),最后结果除于2)

public static void main(String[] args) {
    System.out.println((7*6*5*4*3*2*1)/2);
}

3.蓝桥杯2020Java组省赛模拟赛_第3张图片
解析:最少是(n-1),最多n(n-1)

蓝桥杯2020Java组省赛模拟赛_第4张图片
12.5 x 1024 x 1024 = 13,107,200‬
5.
蓝桥杯2020Java组省赛模拟赛_第5张图片
蓝桥杯2020Java组省赛模拟赛_第6张图片
解析:

public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        int a=scanner.nextInt();
        int b=scanner.nextInt();
        int c=scanner.nextInt();
        int count=0;
        for (int i = 1; i <= n; i++) {
            if (i%a != 0 && i%b !=0 && i%c != 0){
                count++;
            }
        }
        System.out.println(count);
    }

蓝桥杯2020Java组省赛模拟赛_第7张图片
解析:

import java.util.Scanner;
public class Six {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String str = sc.nextLine();
        char[] chars = str.toCharArray();
        char[] newStr=new char[str.length()];
        for (int i = 0; i < chars.length; i++) {
            if (Character.isLowerCase(chars[i])){
            	//注意当字母为x,y,z时不能向后减,应回到字母a,b,c
                if (chars[i]=='x' || chars[i]=='y' || chars[i]=='z'){
                    newStr[i]=(char)(chars[i]-'z'+'c');
                }else {
                    newStr[i]=(char)(chars[i]+3);
                }
            }
        }
        String string = String.valueOf(newStr);
        System.out.println(string);
    }
}

蓝桥杯2020Java组省赛模拟赛_第8张图片
蓝桥杯2020Java组省赛模拟赛_第9张图片
解析:

public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int m = sc.nextInt();
        int n = sc.nextInt();
        int[][] dp=new int[m+2][n+2];
        for (int i = 1; i <= n; i++) {
            dp[1][i]=n-i+1;
        }
        for (int i = 2; i <= m; i++) {
            if ((i&1)==1){
                for (int j = n;j >= 1;j--){
                    dp[i][j]=(dp[i-1][j-1] + dp[i][j+1]) % 10000;
                }
            }
            else {
                for (int j = 1; j <= n; j++) {
                    dp[i][j]=(dp[i-1][j+1] + dp[i][j-1]) % 10000;
                }
            }
        }
        int result=(m & 1)==1 ? dp[m][1] : dp[m][n];
        System.out.println(result);
    }

蓝桥杯2020Java组省赛模拟赛_第10张图片
蓝桥杯2020Java组省赛模拟赛_第11张图片
解析:

public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int m=sc.nextInt();
        int r=sc.nextInt();
        int c=sc.nextInt();
        int[][] num=new int[m][n];
        int temp=1;
        int upBound=0;
        int rightBound=num[0].length-1;
        int leftBound=0;
        int downBound=num.length-1;
        while (true){
            for(int i=leftBound; i<=rightBound; ++i)
                num[upBound][i]=temp++;
            if(++upBound>downBound) break;
            for(int i=upBound; i<=downBound; ++i)
                num[i][rightBound]=temp++;
            if(--rightBound<leftBound)  break;
            for(int i=rightBound; i>=leftBound; --i)
                num[downBound][i]=temp++;
            if(--downBound<upBound) break;
            for(int i=downBound; i>=upBound; --i)
                num[i][leftBound]=temp++;
            if(++leftBound>rightBound)  break;
        }
        System.out.println(num[r-1][c-1]);
    }

蓝桥杯2020Java组省赛模拟赛_第12张图片
蓝桥杯2020Java组省赛模拟赛_第13张图片
解析:
参照:点击这里即可查看详细步骤
10.
蓝桥杯2020Java组省赛模拟赛_第14张图片
蓝桥杯2020Java组省赛模拟赛_第15张图片
解析:
参照:点击这里即可查看详细步骤

你可能感兴趣的:(蓝桥杯)