# Bit Manipulation# Greedy# ZeroJudge

e359 - Xor 運算(簡單! ~ :))

🔗 前往 ZeroJudge 原題

題目描述

題目要求計算一個集合的所有非空子集的 XOR 運算結果的 XOR 運算,並輸出結果模 1000000007 的值。

解題思路

當集合大小 N 大於 1 時,所有非空子集的 XOR 運算結果的 XOR 運算結果為 0。這是因為對於集合中的每個元素,它會出現在一半的子集中,因此 XOR 運算會抵消。當 N 等於 1 時,結果就是集合中唯一的元素的值。程式碼直接根據 N 的值進行判斷,如果 N 等於 1,則輸出集合中的元素,否則輸出 0。

複雜度分析

  • 時間複雜度: O(1)
  • 空間複雜度: O(1)

程式碼

#include <iostream>
using namespace std;
int main() {
	cin.sync_with_stdio(false), cin.tie(NULL);
	int n, a;
	while (cin >> n >> ws) {
		if (n == 1){
			cin >> a;
			cout << a << "\n";
		}
		else{
			cin.ignore(200000,'\n');
			cout << "0\n";
		}
	}
}

Discussion