方法一
暴力
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int t=in.nextInt();
while(t-->0){
int n=in.nextInt();
int[] a=new int[n];
for(int i=0;i<n;i++){
a[i]=in.nextInt();
}
for(int i=0;i<n;i++){
int xor=a[i];
for(int j=0;j<n;j++){
xor=xor^a[j];
}
//如果异或为0,说明是的,如果有偶数个x,那么异或和为x
if(xor==0||xor==a[i]){
System.out.println(a[i]);
break;
}
}
}
}
}
方法二
设为x 原数组为a b c d e
因为a^b^c^d^e=x
所以新数组相异或为a^b^c^d^e^x=x^x=0
假设a为x,那么需要证明b^c^d^e^x=a
因为a^(b^c^d^e^x)=a^a=0符合,证明成功
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int t=in.nextInt();
while(t-->0){
int n=in.nextInt();
int[] a=new int[n];
for(int i=0;i<n;i++){
a[i]=in.nextInt();
if(i==0){
System.out.println(a[i]);
}
}
}
}
}

京公网安备 11010502036488号