【蓝桥杯】2021省赛真题第二场详解

🐏小怜怜的简介:

💖博客主页:浣熊小怜怜

🚀年龄:21 大二在读

💪爱好:干饭,运动,码代码,看书,音乐

🎉欢迎关注🔍点赞👍收藏🎇留言📙

🎄有任何疑问,欢迎留言讨论!!!

目录

🎈A 浮点数

🎈B 求余 ☑️

🎈C 双阶乘 ☑️

🎈D 格点 ☑️

🎈E 整数分解

🎈F 3 的倍数 ☑️

🎈G 特殊年份☑️

🎈H 小平方☑️

🎈I 完全平方数☑️

🎈J 负载均衡

🎈A 浮点数

本题总分:5 分

🎯问题描述:

IEEE 754 规定一个双精度浮点数由 1 位符号位、11 位阶和 52 位尾数组成(以上位数都表示二进制位数)。 请问,按此规定一个双精度浮点数占用几个字节?

🎈B 求余 ☑️

本题总分:5 分

🎯问题描述:

在 C/C++/Java/Python 等语言中,使用 % 表示求余,请问 2021%20 的值是多少?

package com.year2020SC;
​
public class demo {
    public static void main(String[] args) {
        System.out.println(2021%20);
    }
}

1

🎈C 双阶乘 ☑️

本题总分:10 分

🎯问题描述:

一个正整数的双阶乘,表示不超过这个正整数且与它有相同奇偶性的所有正整数乘积。n 的双阶乘用 n ! !表示。 例如: 3 ! ! = 3 × 1 = 3 。 8 ! ! = 8 × 6 × 4 × 2 = 384 。 11 ! ! = 11 × 9 × 7 × 5 × 3 × 1 = 10395 。 请问,2021 ! !的最后 5 位(这里指十进制位)是多少? 注意:2021 ! ! = 2021 × 2019 × ⋅ ⋅ ⋅ × 5 × 3 × 1 。 提示:建议使用计算机编程解决问题。

package com.year2020SC;
​
import java.math.BigInteger;
​
//2021 ! ! = 2021 × 2019 × ⋅ ⋅ ⋅ × 5 × 3 × 1 。
public class demo {
    public static void main(String[] args) {
        long n = 1;
        BigInteger sum = BigInteger.valueOf(n);
        for (int i = 1; i <= 2021; i = i + 2) {
            sum = sum.multiply(BigInteger.valueOf(i));
        }
        System.out.println(sum);
    }
}

59375

🎈D 格点 ☑️

本题总分:10 分

🎯问题描述:

如果一个点 ( x , y ) 的两维坐标都是整数,即 x ∈ Z且 y ∈ Z ,则称这个点为一个格点。 如果一个点 ( x , y ) 的两维坐标都是正数,即 x > 0 且 y > 0 ,则称这个点在第一象限。 请问在第一象限的格点中,有多少个点 ( x , y )的两维坐标乘积不超过 2021 ,即 x ⋅ y ≤ 2021 。 提示:建议使用计算机编程解决问题。

package com.year2020SC;
​
public class demo {
    public static void main(String[] args) {
        // x ⋅ y ≤ 2021
        int count=0;
        for (int i = 1; i <10000 ; i++) {
            for (int j = 1; j <10000; j++) {
               if (i*j<=2021){
                   count++;
               }
            }
        }
        System.out.println(count);
    }
}

15698

🎈E 整数分解

本题总分:15 分

🎯问题描述:

将 3 分解成两个正整数的和,有两种分解方法,分别是 3 = 1 + 2 和 3 = 2 + 1 。注意顺序不同算不同的方法。 将 5 分解成三个正整数的和,有 6 种分解方法,它们是 1 + 1 + 3 = 1 + 2 + 2 = 1 + 3 + 1 = 2 + 1 + 2 = 2 + 2 + 1 = 3 + 1 + 1 。 请问,将 2021 分解成五个正整数的和,有多少种分解方法?

for循环太复杂~~运行结束不了

🎈F 3 的倍数 ☑️

时间限制: 1.0s 内存限制: 512.0MB

本题总分: 15 分

🎯问题描述:

小蓝对 3 的倍数很感兴趣。现在他手头有三个不同的数 a , b , c ,他想知道,这三个数中是不是有两个数的和是 3 的倍数。

例如,当 a = 3 , b = 4 , c = 6 时,可以找到 a 和 c 的和是 3 的倍数。 例如,当 a = 3 , b = 4 , c = 7 时,没办法找到两个数的和是 3 的倍数。

输入格式输入三行,每行一个整数,分别表示 a , b , c 。输出格式如果可以找到两个数的和是 3 的倍数,输出 y e s ,否则输出 n o 。

测试样例1

Input:
3
4
6
​
Output:
yes
1
2
3
4
5
6
7

测试样例2

Input:
3
4
7
​
Output:
no
package com.year2020SC;
​
import java.math.BigInteger;
import java.util.Scanner;
​
public class demo {
    public static void main(String[] args) {
        //找到两个数的和是 3  的倍数,输出 y e s ,否则输出 n o 。
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int c = sc.nextInt();
        int count = 0;
        if ((a + b) % 3 == 0) {
            count++;
        }
        if ((b + c) % 3 == 0) {
            count++;
        }
        if ((c + a) % 3 == 0) {
            count++;
        }
        if (count>=1){
            System.out.println("yes");
        }else {
            System.out.println("no");
        }
    }
}

🎈G 特殊年份☑️

时间限制: 1.0s 内存限制: 512.0MB

本题总分:20 分

🎯问题描述:

今年是 2021 年,2021 这个数字非常特殊,它的千位和十位相等,个位比百位大 1,我们称满足这样条件的年份为特殊年份。 输入 5 个年份,请计算这里面有多少个特殊年份。输入格式输入 5 行,每行一个 4 位十进制数(数值范围为 1000至 9999),表示一个年份。

输出格式

输出一个整数,表示输入的 5 个年份中有多少个特殊年份。

测试样例1

Input:
2019
2021
1920
2120
9899
​
Output:
2
​
Explanation:
2021 和 9899 是特殊年份,其它不是特殊年份。
package com.year2020SC;
​
import java.util.Scanner;
​
public class demo {
    public static void main(String[] args) {
        //千位和十位相等,个位比百位大 1
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int c = sc.nextInt();
        int d = sc.nextInt();
        int e = sc.nextInt();
        int count = 0;
        if (is(a)) {
            count++;
        }
        if (is(b)) {
            count++;
        }
        if (is(c)) {
            count++;
        }
        if (is(d)) {
            count++;
        }
        if (is(e)) {
            count++;
        }
        System.out.println(count);
​
    }
​
    public static boolean is(int n) {
        int g = n % 10;
        int s = n / 10 % 10;
        int b = n / 100 % 10;
        int q = n / 1000;
        boolean flag = false;
        if (q == s && g == (b + 1)) {
            flag = true;
        }
        return flag;
    }
}

🎈H 小平方☑️

时间限制: 1.0s 内存限制: 512.0MB

本题总分:20 分

🎯问题描述:

小蓝发现,对于一个正整数 n 和一个小于 n 的正整数 v ,将 v 平方后对 n 取余可能小于 n 的一半,也可能大于等于 n 的一半。 请问,在 1 到 n − 1 中,有多少个数平方后除以 n 的余数小于 n 的一半。

例如,当 n = 4 时,1 , 2 , 3 的平方除以 4 的余数都小于 4 的一半。 又如,当 n = 5 时,1 , 4 的平方除以 5 的余数都是 1 ,小于 5 的一半。而 2 , 3 的平方除以 5 的余数都是 4 ,大于等于 5 的一半。

输入格式

输入一行包含一个整数 n 。

输出格式

输出一个整数,表示满足条件的数的数量。

测试样例1

Input:
5
​
Output:
2
package com.year2020SC;
​
import java.util.Scanner;
​
public class demo {
    public static void main(String[] args) {
        //在1到n−1中,有多少个v平方后除以 n  的余数小于 n 的一半
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int count = 0;
        for (int v = 1; v < n; v++) {
            if (v * v % n < n / 2) {
                count++;
            }
        }
        System.out.println(count);
    }
}

🎈I 完全平方数☑️

时间限制: 2.0s 内存限制: 512.0MB

本题总分:25 分

🎯问题描述:

一个整数 a 是一个完全平方数,是指它是某一个整数的平方,即存在一个整数 b ,使得 a = b ^2 。 给定一个正整数 n,请找到最小的正整数 x ,使得它们的乘积是一个完全平方数。

输入格式

输入一行包含一个正整数 n 。

输出格式

输出找到的最小的正整数 x 。

测试样例1

Input:
12
​
Output:
3

测试样例2

Input:
15
​
Output:
15
package com.year2020SC;
​
import java.util.Scanner;
​
public class demo {
    public static void main(String[] args) {
//给定一个正整数 n,请找到最小的正整数 x ,使得它们的乘积是一个完全平方数。
        Scanner sc = new Scanner(System.in);
        long n = sc.nextLong();
        for (int x = 1; x <= n; x++) {
            long m = n * x;
            if (isWan(m)) {
                System.out.println(x);
                break;
            }
        }
    }
​
    public static boolean isWan(long n) {
        boolean flag = false;
        if (Math.sqrt(n) % 1 == 0) {
            flag = true;
        }
        return flag;
    }
}

🎈J 负载均衡

时间限制: 2.0s 内存限制: 512.0MB

本题总分: 25 分

🎯问题描述:

 测试样例1

Input:
2 6
5 5
1 1 5 3
2 2 2 6
3 1 2 3
4 1 6 1
5 1 3 3
6 1 3 4
​
Output:
2
-1
-1
1
-1
0
​
Explanation:
时刻 1,第 1 个任务被分配到第 1 台计算机,耗时为 5 ,这个任务时刻 6 会结束,占用计算机 1 的算力 3。
时刻 2,第 2 个任务需要的算力不足,所以分配失败了。
时刻 3,第 1 个计算机仍然正在计算第 1 个任务,剩余算力不足 3,所以失败。
时刻 4,第 1 个计算机仍然正在计算第 1 个任务,但剩余算力足够,分配后剩余算力 1。
时刻 5,第 1 个计算机仍然正在计算第 1, 4 个任务,剩余算力不足 4,失败。
时刻 6,第 1 个计算机仍然正在计算第 4 个任务,剩余算力足够,且恰好用完。

 🎉写在最后

生命有限,请浪费在更美好的事物上。

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值