欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

2021蓝桥杯校级模拟赛习题答案&总结

程序员文章站 2022-07-03 12:06:43
...

写在前面

本次模拟赛习题难度比较常规,总的来说中规中举,对我这种小白都比较友好,填空题基本都可以直接算出来,除了最后两道编程题可能稍微需要花点时间,当然当时实在坐不住提前交卷了没能写完,欢迎大佬们评论区讨论指导,感激不尽。
下面是本次模拟赛习题

第一题

问题描述

请问在 1 到 2020 中,有多少个数与 2020 互质,即有多少个数与 2020 的最大公约数为 1。

答案

800

解题思路
​  直接暴力,遍历求解

第二题

问题描述

SCII 码将每个字符对应到一个数值(编码),用于信息的表示和传输。
在 ASCII 码中,英文字母是按从小到大的顺序依次编码的,
例如:字母 A 编码是 65, 字母 B 编码是 66,字母 C 编码是 67,请问字母 Q 编码是多少?

答案

81

第三题

问题描述

有一棵二叉树,一个由2021个结点,其中有1000个结点有两个子结点,其他的结点有一个或者0个子结点。
请问,这棵二叉树有多少个叶结点?

答案

1001

解题思路
​  当二叉树结点数为2021时,有2020条树枝,有两个子结点的结点数对应两个树枝,有一个子结点的结点数对应一个树枝,那么当有2021个结点,有2020个树枝,其中有1000个结点有两个子结点,就对应2000个树枝,还剩2020-2000 = 20个树枝留给有一个子结点的结点数,就是2021-1000-20=1001个叶结点。

第四题

问题描述

对于整数 v 和 p,定义 Pierce 序列为:
  a[1] = v
  a[i] = p % a[i-1]
  例如,当 v = 8, p = 21 时,对应的 Pierce 序列为
  a[1] = 8
  a[2] = 5
  a[3] = 1
  再往后计算,值变为 0,不在我们考虑的范围内。因此当 v = 8, p = 21 时, Pierce 序列的长度为 3。
  当 p 一定时,对于不同的 v 值,Pierce 序列的长度可能不同。
  当 p = 8 时,若 1<=v<p,最长的 Pierce 序列出现在 v=13时,为(13, 8, 5, 1),长度为 4。
  当 p=2021 时,最长的 Pierce 序列出现在 v=1160 时,请问这个序列有多长?

答案

12

第五题

问题描述

在 Excel 中,第 1 列到第 26 列的列名依次为 A 到 Z,从第 27 列开始,列名有两个字母组成,
第 27 列到第 702 列的列名依次为 AA 到 ZZ。之后的列再用 3 个字母、4 个字母表示。
请问,第 2021 列的列名是什么?

答案

BYS

解题思路
​  直接找规律计算很快就能计算出。

第六题

问题描述

斐波那契数列是这样一个数列:它的第一项和第二项都是1,从第三项开始每一项都是前两项的和。
根据以上定义,我们容易计算出斐波那契数列的前几项依次是:1, 1, 2, 3, 5, 8, 13, 21, 34, 55 ……
现在请你计算斐波那契数列第N项是奇数还是偶数?

输入格式
 输入的包含一个整数N。
输出格式
 如果是奇数输出1,是偶数输出0。

样例输入
10
样例输出
1

提示
 找规律。
数据规模和约定
 对于所有评测用例,1 <= N <= 1000000000。

代码

方法① 常规写法,先计算斐波那契数列第N项,再判断是奇数还是偶数。

import java.util.Scanner;
public class Main{
    public static int fib (int n) {
        if (n <= 2) {
            return 1;
        }
        else {
            return (fib(n - 1) + fib (n - 2));
        }
    }
    public static void main (String args[]) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = fib(a);
        if(b%2==0)
        System.out.println("0");
        else
        System.out.println("1");
    }
}

方法②,出来以后看到有大佬的另一种写法,顿时开悟,妙啊~ 现在把它分享过来
N给的范围很大,题目提示让找规律。N % 3 == 0 时为偶数,dp[i-2]是奇数,dp[i-1]是奇数,俩奇数相加一定是偶数。然后往后推一奇一偶相加是奇数,每三次一个T。

public void main(String args[]) {
    Scanner scan = new Scanner(System.in);
    long N = scan.nextLong();
    int dp = N % 3 == 0 ? 0 : 1;
    System.out.println(dp);
}

第七题

问题描述

 在书写一个较大的整数时,为了方便看清数位,通常会在数位之间加上逗号来分割数位,具体的,从右向左,
 每三位分成一段,相邻的段之间加一个逗号。
 例如,1234567 写成 1,234,567。
 例如,17179869184 写成 17,179,869,184。
 给定一个整数,请将这个整数增加分割符后输出。
输入格式
 输入一行包含一个整数 v。
输出格式
 输出增加分割符后的整数。

样例输入
1234567
样例输出
1,234,567
样例输入
17179869184
样例输出
17,179,869,184

数据规模和约定
 对于 50% 的评测用例,0 <= v < 10^9 (10的9次方)。
 对于所有评测用例,0 <= v < 10^18 (10的18次方)。

代码

import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        long n = sc.nextLong();
        StringBuilder sb = new StringBuilder();
        if(n==0){
            System.out.println(sb.append(0).toString());
            return;
        }

        int count=0;
        while(n>0){
            sb.insert(0,n%10);
            count++;
            if(n>=10 && count>0 && count%3==0)
                sb.insert(0,',');
            n /=10;
        }
        System.out.println(sb.toString());
    }
}

第八题

问题描述

给定一个矩阵 M,由 n 行 m 列组成,第 i 行第 j 列值为 M[i][j]。
  定义矩阵 M 的重量为矩阵中所有元素的和,几位weight(M)
  请找到矩阵左上角的一个子矩阵S(矩阵的前 r 行中的前 c 列组成),
  使得这个子矩阵的重量的两倍最接近矩阵 M 重量。即 |2 weight(S)-weight(M)| 最小。
  如果有多个子矩阵满足条件,请找出面积 r * c 最小的一个。
  如果仍然有多个子矩阵满足条件,请找出其中 r 最小的一个。
输入格式
  输入第一行包含两个整数 n, m,表示矩阵的大小。
  接下来 n 行,每行 m 个整数,表示给定的矩阵M。
输出格式
  输出一行,包含两个整数 r, c,表示子矩阵为矩阵 M 的前 r 行中的前 c 列。
  
样例输入
3 4
3 0 1 1
1 0 1 1
1 1 -2 4
样例输出
2 3
数据规模和约定
  对于 30% 的评测用例,1 <= n, m <= 20, -10 <= M[i][j] <= 10。
  对于 50% 的评测用例,1 <= n, m <= 100, -100 <= M[i][j] <= 100。
  对于所有评测用例,1 <= n, m <= 1000, -1000 <= M[i][j] <= 1000。

第九题

问题描述

杂货铺老板一共有N件物品,每件物品具有ABC三种属性中的一种或多种。
从杂货铺老板处购得一件物品需要支付相应的代价。
 现在你需要计算出如何购买物品,可以使得ABC三种属性中的每一种都在至少一件购买的物品中出现,
 并且支付的总代价最小。
输入格式
 输入第一行包含一个整数N。
 以下N行,每行包含一个整数C和一个只包含"ABC"的字符串,代表购得该物品的代价和其具有的属性。
输出格式
 输出一个整数,代表最小的代价。如果无论如何凑不齐ABC三种属性,输出-1。

样例输入
5
10 A
9 BC
11 CA
4 A
5 B
样例输出
13
数据规模和约定
 对于50%的评测用例,1 <= N <= 20
 对于所有评测用例,1 <= N <= 1000, 1 <= C <= 100000

总结
最后两道题很遗憾当时最后没能写出来,希望各位能在评论区说说自己的想法,一起进步呀~

相关标签: java