草庐IT

2022蓝桥杯javaC省赛

笨笨的小怂宝 2023-04-11 原文

目录

A:排列字母

代码:

B、特殊时间

 C、纸张尺寸

个人代码:

D、求和

个人代码:

E、矩形拼接

个人代码:

F、选数异或

个人代码:

G:GCD

个人代码:

H:青蛙过河

个人代码:

I:因数平方和

个人代码:

J:最长不下降子序列


A:排列字母

签到题来了!!!

直接上代码(也可以手推哈)

个人答案:AAAEEEEEEHHHIIILLRRRSSTTWWWY

代码:

import java.util.Arrays;

public class 字母排列 {
    public static void main(String[] args) {
        String ss="WHERETHEREISAWILLTHEREISAWAY";
        char []arr=new char[ss.length()];
        for (int i=0;i<ss.length();i++) {
            arr[i]=ss.charAt(i);
        }
        Arrays.sort(arr);
        for (int i=0;i<ss.length();i++)
            System.out.print(arr[i]);
    }
}

B、特殊时间

比赛时没写!!!

 个人答案:220

 C、纸张尺寸

大题的签到题了!

 思路:开一个长度为10的数组,直接存放每一个对应的长宽就好

个人代码:

import java.util.Scanner;

public class 纸张尺寸 {
    public static void main(String[] args) {
        int [][]arr=new int[10][2];
        Scanner sc=new Scanner(System.in);
        int a=1189,b=841;
        arr[0][0]=1189;
        arr[0][1]=841;
        for (int i=1;i<10;i++){
            arr[i][0]=Math.min(a,b);
            if (a>b) {
                a /= 2;
            }
            else{
                b/=2;
            }
            arr[i][1]=Math.min(a,b);
        }
        String ss=sc.next();
        int t=ss.charAt(1)-'0';
        System.out.println(arr[t][0]);
        System.out.println(arr[t][1]);
    }
}

D、求和

 我比赛的时候用的是前缀和的方法计算的,每一次取出最前的面的数,和后面的所有数和相乘;

个人代码:

import java.util.Scanner;

public class 求和 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        long s=0;
        int n=sc.nextInt();
        int []arr=new int[n];
        for (int i=0;i<n;i++){
            arr[i]=sc.nextInt();
            s+=arr[i];
        }
        long count=0;
        for (int i=0;i<n;i++){
            count+=arr[i]*(s-arr[i]);
            s-=arr[i];
        }
        System.out.println(count);
    }
}

 测了一下20万个1000,没爆,也就是说200000个1000的结果也是可以出来的,所以直接用的long型,用大数应该也问题不大

E、矩形拼接

 这题思路:三个图案组成后,只会有三种情况

4条边;6条边;8条边;

比赛和回来写的不太一样,回来后写只有九十几行代码,比赛直接十多个if用的一百多行代码!!!

个人代码:

import java.util.Scanner;

public class 矩形拼接 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int T=sc.nextInt();
        int xa,xb,xc,ya,yb,yc;
        for (int i=0;i<T;i++){
            xa=sc.nextInt();
            ya=sc.nextInt();
            xb=sc.nextInt();
            yb=sc.nextInt();
            xc=sc.nextInt();
            yc=sc.nextInt();
            int t=0,s=0;
            if (pd(xa, xb, xc, ya, yb, yc)&&s==0) s=1;
            if (pd(ya, xb, xc, xa, yb, yc)&&s==0) s=1;
            if (xb==xc&&s==0){
                t=1;
                if (yb+yc==xa||yb+yc==ya){
                    System.out.println(4);
                    s=1;
                }
            }
            if (xb==yc&&s==0){
                t=1;
                if (yb+xc==xa||yb+xc==ya){
                    System.out.println(4);
                    s=1;
                }
            }
            if (yb==xc&&s==0){
                t=1;
                if (xb+yc==xa||xb+yc==ya){
                    System.out.println(4);
                    s=1;
                }
            }
            if (yb==yc&&s==0){
                t=1;
                if (xb+xc==xa||xb+xc==ya){
                    System.out.println(4);
                    s=1;
                }
            }
            if(xa+xb==xc||xa+xb==yc||xa+yb==xc||xa+yb==yc||xa+xc==xb||xa+xc==yb||xa+yc==xb||xa+yc==yb)
                t=1;
            if(ya+xb==xc||ya+xb==yc||ya+yb==xc||ya+yb==yc||ya+xc==xb||ya+xc==yb||ya+yc==xb||ya+yc==yb)
                t=1;
            if(xb+xc==xa||xb+xc==ya||xb+yc==xa||xb+yc==ya||yb+xc==xa||yb+xc==ya||yb+yc==xa||yb+yc==ya)
                t=1;
            if (s==0) {
                if (t == 1) {
                    System.out.println(6);
                } else {
                    System.out.println(8);
                }
            }
        }
    }

    private static boolean pd(int xa, int xb, int xc, int ya, int yb, int yc) {
        int t;
        if (xa==xb){
            t =1;
            if (ya+yb==xc||ya+yb==yc||xa==xc||xa==yc){
                System.out.println(4);
                return true;
            }
        }
        if (xa==yb){
            t =1;
            if (ya+xb==xc||ya+xb==yc||xa==xc||xa==yc){
                System.out.println(4);
                return true;
            }
        }
        if (xa==xc){
            t =1;
            if (ya + yc == xb || ya + yc == yb){
                System.out.println(4);
                return true;
            }
        }
        if (xa==yc){
            t =1;
            if (ya+xc==xb||ya+xc==yb){
                System.out.println(4);
                return true;
            }
        }
        return false;
    }
}

F、选数异或

 不会异或,比赛瞎写了一个,然后纯纯就是暴力,不知道对不对(数据不大,如果对的话应该有40%的感觉)!

个人代码:

import java.util.Scanner;

public class 选数异或 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int m=sc.nextInt();
        int x=sc.nextInt();
        int []arr=new int[n+1];
        for (int i=1;i<=n;i++){
            arr[i]=sc.nextInt();
        }
        for (int i=0;i<m;i++){
            int a=sc.nextInt(),b=sc.nextInt(),s=0;
            for (int j=a;j<b;j++){
                for (int k=j+1;k<=b;k++){
                    if ((arr[j]^arr[k])==x) {
                        s=1;
                        System.out.println("yes");
                        break;
                    }
                }
                if (s==1)
                    break;
            }
            if (s==0)
                System.out.println("no");
        }
    }
}

G:GCD

 用我的话说:这就是一个骗人的题!!!

问gcd(a+k,b+k)的最大公约数,不难想到最大公约数为abs(a-b)

举例:a=10,b=17

这俩数同时增加k可以获得最大公约数为7;

10+4,17+4;即14和21的最大公约数,满足7;并且无论怎么凑都无法获得大于7的公约数

所以这题就很简单了,先判断可以获得的最大公约数,然后再寻找最小的k满足条件即可

个人代码:

import java.util.Scanner;

public class GCD {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        long a=sc.nextLong();
        long b=sc.nextLong();
        long max=Math.abs(a-b);
        if (a%max==0){
            System.out.print(0);
        }else {
            System.out.print(max-(a%max));
        }
    }
}

max-(a%max)是计算a加k个值可以满足公约数包含max;

H:青蛙过河

 这题不晓得思路对不对,比赛的时候用的双向的前缀和,然后来判断的,有兴趣看一下,我不晓得对不对。

测试用例:

5 1

1 0 1 0

从左往右前缀和:1  1   2   2

从右往左前缀和:0  1   1   2

然后寻找最小的位置,满足从左往右和从右往左都>=2*x;

跳跃宽度1:1/0  不满足

跳跃宽度2:1/1  不满足

跳跃宽度3:2/1  不满足

跳跃宽度4:2/2  满足

个人代码:

ps:不确定对错,看看就行

import java.util.Scanner;

public class 青蛙过河 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int x=sc.nextInt();
        int []arr=new int[n];
        int []brr=new int[n];
        int []crr=new int[n];
        for (int i=1;i<n;i++){
            arr[i]=sc.nextInt();
            brr[i]=brr[i-1]+arr[i];
        }
        for (int i=n-1;i>=1;i--){
         crr[n-i]=crr[n-i-1]+arr[i];
        }
        for (int i=1;i<n;i++){
            if (brr[i]>=2*x&&crr[i]>=2*x){
                System.out.print(i);
                return;
            }
        }
    }
}

I:因数平方和

测试样例错了:100000      输出:680584257

这题比赛直接暴力了,1e8范围内的好像都可以出,但是1e9就不行,只能祈祷多点数据是1e8以内!!!

具体思路可以去做一下蓝桥杯练习系统试题集里面的约数个数那个题!!!

个人代码:

初始:

import java.util.Scanner;
public class 因数平方和 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        long s=0;
        long k;
        for (int i=1;i<=n;i++){
            k=n/i;
            s+=(k*((long) i *i))%1000000007;
            s%=1000000007;
        }
        System.out.print(s);
    }
}

更改:

import java.math.BigInteger;
import java.util.Scanner;

public class 因数平方和 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        long s=0;
        long k;
        int t= n/2;
        for (int i=1;i<=t;i++){
            k=n/i;
            s+=(k*((long) i *i))%1000000007;
            s%=1000000007;
        }
        BigInteger x= BigInteger.valueOf(n),y= BigInteger.valueOf(t);
        BigInteger a= BigInteger.valueOf(1),b= BigInteger.valueOf(2),c= BigInteger.valueOf(6);
        x= x.multiply(x.add(a)).multiply(x.multiply(b).add(a)).divide(c);
        y= y.multiply(y.add(a)).multiply(y.multiply(b).add(a)).divide(c);
        x=(x.add(BigInteger.valueOf(s)).subtract(y)).mod(BigInteger.valueOf(1000000007));
        System.out.print(x);
    }
}

J:最长不下降子序列

直接暴力骗分的,就不丢人了,溜了溜了!!! 

有关2022蓝桥杯javaC省赛的更多相关文章

  1. 映宇宙2022年营收63亿元:同比下降三成,毛利率提升4.3个百分点 - 2

    3月26日,映宇宙(HK:03700,即“映客”)发布截至2022年12月31日的2022年度业绩财务报告。财报显示,映宇宙2022年的总营收为63.19亿元,较2021年同期的91.76亿元下降31.1%。2022年,映宇宙的经营亏损为4698.7万元,2021年同期则为净利润4.57亿元;期内亏损(净亏损)为1.68亿元,2021年同期的净利润为4.33亿元;非国际财务报告准则经调整净利润为3.88亿元,2021年同期为4.82亿元,同比下降19.6%。 映宇宙在财报中表示,收入减少主要是由于行业竞争加剧,该集团对旗下产品采取更为谨慎的运营策略以应对市场变化。不过,映宇宙的毛利率则有所提升

  2. 蓝桥杯备赛(二) - 2

    目录前言: 一、ASC分析代码实现二、 卡片分析代码实现三、 直线分析代码实现四、货物摆放分析代码实现小结:前言:  在刷题的过程中,发现蓝桥杯的题目和力扣的差别很大。让人有一种不一样的感觉,蓝桥杯题目偏向对于实际问题用编程去的解决,而力扣给人感觉很锻炼自己的编程思维,逻辑能力。两者结合去刷,相信会有不一样的收获。 一、ASC  已知大写字母A的ASCII码为65,请问大写字母L的ASCII码是多少?分析  这道题目看上去很简单,我们需确定自己计算的准确,所以我建议用编程去解决。代码实现publicclassTest8{publicstaticvoidmain(String[]args){Sy

  3. 蓝桥杯C/C++VIP试题每日一练之报时助手 - 2

    ?作者主页:静Yu?简介:CSDN全栈优质创作者、华为云享专家、阿里云社区博客专家,前端知识交流社区创建者?社区地址:前端知识交流社区?博主的个人博客:静Yu的个人博客?博主的个人笔记本:前端面试题个人笔记本只记录前端领域的面试题目,项目总结,面试技巧等等。接下来会更新蓝桥杯官方系统基础练习的VIP试题,依然包括解题思路,源代码等等。问题描述:给定当前的时间,请用英文的读法将它读出来。时间用时h和分m表示,在英文的读法中,读一个时间的方法是:  如果m为0,则将时读出来,然后加上“o’clock”,如3:00读作“threeo’clock”。  如果m不为0,则将时读出来,然后将分读出来,如5

  4. IDEA 2022 创建 Spring Boot 项目详解 - 2

    如何用IDEA2022创建并初始化一个SpringBoot项目?目录如何用IDEA2022创建并初始化一个SpringBoot项目?0. 环境说明1.  创建SpringBoot项目 2.编写初始化代码0. 环境说明IDEA2022.3.1JDK1.8SpringBoot1.  创建SpringBoot项目        打开IDEA,选择NewProject创建项目。        填写项目名称、项目构建方式、jdk版本,按需要修改项目文件路径等信息。        选择springboot版本以及需要的包,此处只选择了springweb。        此处需特别注意,若你使用的是jdk1

  5. 十四届蓝桥青少组模拟赛Python-20221108 - 2

    十四届蓝桥青少组模拟赛Python-20221108T1.二进制位数十进制整数2在十进制中是1位数,在二进制中对应10,是2位数。十进制整数22在十进制中是2位数,在二进制中对应10110,是5位数。请问十进制整数2022在二进制中是几位数?print(len(bin(2022))-2)#运行结果:11T2.晨跑小蓝每周六、周日都晨跑,每月的1、11、21、31日也晨跑。其它时间不晨跑。已知2022年1月1日是周六,请问小蓝整个2022年晨跑多少天?#样例代码1ls=[0,31,28,31,30,31,30,31,31,30,31,30,31]ans=0k=6foriinrange(1,13)

  6. 2022年10月23日周赛ZZULIOJ - 2

    文章目录问题B:芝华士威士忌和他的小猫咪们代码&注释问题C:愿我的弹雨能熄灭你们的痛苦代码注释问题D:猜糖果游戏代码注释问题E:有趣的次方代码注释问题F:这是一个简单题代码&注释问题G:打印矩阵代码注释问题H:scz的简单考验代码注释问题I:完美区间代码&注释问题J:是狂热的小迷妹一枚吖~代码&注释2022年10月23日周赛ZZULIOJ问题B:芝华士威士忌和他的小猫咪们时间限制:1Sec内存限制:128MB题目描述芝华士威士忌很喜欢带着他的猫咪们一块跑着玩。但是小猫咪们很懒,只有在离他y米以内才愿意和他一块跑。这天他在坐标为x的位置,他想和他的猫咪们一块跑着玩。有n个小猫咪,第i个小猫咪在坐

  7. 【华为OD机试真题 java、python、c++】荒地电站建设【2022 Q4 100分】(100%通过+复盘思路) - 2

    代码请进行一定修改后使用,本代码保证100%通过率,本题目提供了java、python、c++三种代码。复盘思路在文章的最后题目描述祖国西北部有一片大片荒地,其中零星的分布着一些湖泊,保护区,矿区;整体上常年光照良好,但是也有一些地区光照不太好。某电力公司希望在这里建设多个光伏电站,生产清洁能源对每平方公里的土地进行了发电评估,其中不能建设的区域发电量为0kw,可以发电的区域根据光照,地形等给出了每平方公里年发电量x千瓦。我们希望能够找到其中集中的矩形区域建设电站,能够获得良好的收益。输入描述第一行输入为调研的地区长,宽,以及准备建设的电站【长宽相等,为正方形】的边长最低要求的发电量之后每行为

  8. 蓝桥杯 stm32 MCP4017 - 2

    本文代码使用HAL库。文章目录前言一、MCP4017的重要特性二、MCP4017计算RBW阻值三、MCP4017地址四、MCP4017读写函数五、CubeMX创建工程(利用ADC测量MCP4017电压)、对应代码:总结前言一、MCP4017的重要特性蓝桥杯板子上的是MCP4017T-104ELT,如图1。MCP4017是一个可编程电阻,通过写入的数值可以改变电阻的大小。重点在于6引脚(W),5引脚(B&#

  9. [蓝桥杯单片机]学习笔记——串口通信的基本原理与应用 - 2

    目录一、原理部分1、什么是串行通信(1)并行通信与串行通信(2)串行通信的制式(3)串行通信的主要方式  2、配置串口(1)SCON和PCON:串行口1的控制寄存器(2)SBUF:串行口数据缓冲寄存器 (3)AUXR:辅助寄存器​编辑(4)ES、PS:与串行口1中断相关的寄存器(5)波特率设置  3、串口框架编写二、程序案例一、原理部分1、什么是串行通信(1)并行通信与串行通信微控制器与外部设备的数据通信,根据连线结构和传送方式的不同,可以分为两种:并行通信和串行通信。并行通信:数据的各位同时发送与接收,每个数据位使用一条导线,这种方式传输快,但是需要多条导线进行信号传输。串行通信:数据一位一

  10. 玩客云刷机(2022-3-19亲测) - 2

    https://cloud.189.cn/t/BJbYreYbmUj2(访问码:djz6)(网盘2022-4-1更新)一、刷入armbian。1.1使用AmlBurnTool软件烧录首选底包至固件。烧录完成后断开玩客云电源备用。(靠近hdmi的那个口子。)1.2使用WIn32diskimager软件将emmc固件写入U盘。1.3写入成功后,先将U盘插入玩客云靠近网线接口端的USB口,再接入电源。玩客云通电后指示灯会先亮绿灯,再亮蓝灯,红蓝闪烁,最后蓝灯常亮。等到确定蓝灯常亮后,再拔掉U盘、电源。(最好蓝灯常亮后,启动一次玩客云,看看ssh是否正常。)1.4使用WIn32diskimager写入

随机推荐