蓝桥杯JAVA-3

一、题目

二、解题思路

核心原理

设两组异或和为 A、B,则:

A⊕B=1⊕2⊕3⊕4

若 A=B,则 A⊕B=0,即总异或和必须为 0

首先读取测试用例数,对每个用例读取数组长度和元素,将数组中所有数字依次进行异或运算 ,如果最终的总异或结果为 0 ,就说明可以将数组分成两组使两组异或和相等,输出 YES ,否则输出 NO

三、代码

java 复制代码
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //在此输入您的代码...
        int test=scan.nextInt();
        for(int h=1;h<=test;h++){
          int length=scan.nextInt();
          int tempArr[]=new int[length];
          for(int i=0;i<length;i++){
            tempArr[i]=scan.nextInt();
          }
          int sum=tempArr[0];
          for(int j=1;j<length;j++){
            sum=sum^tempArr[j];
          }
          if(sum==0){
            System.out.println("YES");
          }else{
            System.out.println("NO");
          }
        }
        scan.close();
    }
}

四、问题与解决

(一)在计算机中异或符号^

五、知识点总结

1、异或运算(^)

计算机中用 ^ 表示,核心规则是相同为 0,不同为 1 ,且满足 x⊕x=0x⊕0=x

2、分组判定核心定理

若能将数组分成两组且两组异或和相等,则数组所有元素的总异或和一定为 0;反之,总异或和为 0 时,一定可以完成分组。

3、解题固定流程

遍历数组计算总异或和 ,结果为 0 输出YES,否则输出NO

4、计算机逻辑 / 位运算 极简抄表

运算名称 符号(代码) 运算规则 核心公式 / 等价写法
逻辑非 ! 真变假,假变真 !true=false!false=true
按位非 ~ 二进制 0 变 1,1 变 0 仅作用于整数位运算
按位与 & 全 1 为 1,有 0 为 0 二进制位逐位运算
按位或 ` ` 有 1 为 1,全 0 为 0 二进制位逐位运算
按位异或 ^ 不同为 1,相同为 0 异或运算核心符号
按位同或(XNOR) 无专用符号 相同为 1,不同为 0 !(a ^ b)
按位与非(NAND) 无专用符号 先与后非 !(a & b)
按位或非(NOR) 无专用符号 先或后非 `!(a b)`

超精简记忆口诀

非:!(逻辑)、~(位),01 互换最直接

与:& 全 1 才 1,或:| 有 1 就 1

异或:^ 不同才 1,同或是它的反

与非 / 或非 / 同或:都是「先运算,再取反」

相关推荐
Raink老师19 小时前
【AI面试临阵磨枪-79】实时数据 RAG:订单、商家、物流、天气、动态库存
人工智能·面试·职场和发展
Cosolar19 小时前
Chroma向量库面试学习指南
数据库·人工智能·面试·职场和发展·数据库架构
方也_arkling20 小时前
【Java-Day08】static / final / 枚举
java·开发语言
橙淮20 小时前
Spring Bean作用域与生命周期全解析
java·spring
Chengbei1120 小时前
一站式源码安全检测工具、云安全 / APP / 小程序源码敏感信息递归多层目录扫描AK、JWT、手机号、身份证等敏感信息
java·开发语言·安全·web安全·网络安全·系统安全·安全架构
llz_11220 小时前
web-第一次课后作业
java·开发语言·idea
秋921 小时前
Java项目运行5天左右自动宕机:系统性定位与解决方案
java·开发语言·python
小江的记录本21 小时前
【JVM虚拟机】垃圾回收GC:垃圾收集器:CMS:核心原理、回收流程、优缺点、废弃原因(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·spring·面试·maven
DIY源码阁21 小时前
JavaSwing学生成绩管理系统 - MySQL版
java·数据库·mysql·eclipse
basketball6161 天前
C++ NULL 和 nullptr 区别 以及 nullptr 的核心实现
java·开发语言·c++