Header Ad

HackerEarth A XOR operation problem solution

In this HackerEarth A XOR operation problem solution, You are given a set S of distinct positive integers of size n (n is always even). Print the minimum positive integer k that is greater than 0 such that after replacing each element e of the set S with e xor k, set S remains the same. Print -1 if there is no such k.


HackerEarth A XOR operation problem solution


HackerEarth A XOR operation problem solution.

#include<bits/stdc++.h>
using namespace std;
#define int long long int
int32_t main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t;
cin>>t;
while(t--){
int n;
cin>>n;
vector<int> nums(n);
for(int i=0;i<n;i++)
{
cin>>nums[i];
}
unordered_map<int,int> mp;
int x=0LL;
for (int i : nums)
{
x^=i;
mp[i]=1;
}
int flag=0;
for(int i : nums)
{
int temp=i^x;
if(mp[temp]!=1)
{
flag=1;
}
}
if(flag){
cout<<-1<<'\n';
}
else{
cout<<x<<'\n';
}
}
}

Second solution

t = int(input())
while t > 0:
t -= 1
n = int(input())
s = set(map(int, input().split()))
a = list(s)
x = a[0]
done = False
for y in a[1:]:
if x == y:
continue
k = x ^ y
if all(x ^ k in s for x in a):
print(k)
done = True
break
if not done:
print(-1)

Post a Comment

0 Comments