問題描述:
輸入格式:?
?
輸出格式:?
?
樣例輸入:?
2
3
1 2? 3
4
1 2? 3? 4?
樣例輸出:?
YES
NO?
說明/提示
評測用例規模與約定
- 對于?30%?的評測用例,1≤T≤10,2≤N≤100,1≤Ai?≤10^3。
- 對于?100%?的評測用例,1≤T≤10^3,2≤N≤10^3,1≤Ai?≤10^5。
?
?思路:
?根據題目中我們可以知道,要把一組數分成兩組,每組至少一個數,要求這兩組的異或和相等
樣例:{1,2,3} 比如我們讓 1,2一組 ,3為一組,這樣就把這組數分為了兩組,然后我們開始求異或 ( 要轉為2進制計算,計算機內應該是以補碼的形式進行計算,但是恰巧這個題全是正數,正數原碼,反碼,補碼,都一樣)。
第一組:
1 ^ 2 = 0000 0011;
第二組:
3 =? 0000 0011;
這兩組異或和相等,輸出YES,我們還可以發現一個規律就是 分為兩組異或和相等的二進制,再次異或和的值為“0”
所以我們直接把一組數一起求異或和,看是否等于0即可解決這題
案例代碼:
import java.util.*;
public class Main{public static void main(String[] args){Scanner sc = new Scanner(System.in);int t = sc.nextInt();while(t!=0){boolean flag = false;int res = 0;int n = sc.nextInt();int[] arr = new int[n];for(int i=0;i<n;i++){arr[i] = sc.nextInt();}for(int i = 0; i < n-1;i++){res = arr[i] ^ arr[i+1];arr[i+1] = res;}if(res == 0){flag = true;}if(flag){System.out.println("YES");}else{System.out.println("NO");}t--;}}
}
洛谷提交后:
?
以上僅是本人的思路,并非最后的題解答案,有錯誤的話歡迎小伙伴提出~?