Xor

Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others)

Problem Description

For given multisets A⊕x=B

Note that for stands for exclusive-or.

Input

The first line contains a integer B ).

The second line contains A .

The thrid line contains B .

(0≤ai,bi<230 )

Output

The only integer denotes the minimum x exists.

Sample Input

3
0 1 3
1 2 3

Sample Output

2

Source

ftiasch

Manager

 
题意:集合A 与x抑或 得到集合B  输出最小的x  若不存在输出 -1
 
题解: 1.求抑或 满足交换律
        2.两个相同的数 抑或和为0
        3.x^0=x
        4.a^x=b 可以推出 a^b=x
       
 
 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<queue>
 5 #include<stack>
 6 #include<cmath>
 7 #define ll long long 
 8 #define pi acos(-1.0)
 9 #define mod 1000000007
10 using namespace std;
11 int ans1,ans2;
12 int a[100005];
13 int b[100005];
14 int exm;
15 int sum1=0,sum2=0;
16 int main()
17 {
18     int n;
19     while(scanf("%d",&n)!=EOF)
20     {
21         ans1=ans2=0;
22         sum1=0;
23         sum2=0;
24         for(int i=1;i<=n;i++)
25         {
26          scanf("%d",&exm);
27          a[i]=exm;
28          ans1=ans1^exm;
29         }
30         for(int i=1;i<=n;i++)
31         {
32          scanf("%d",&exm);
33          b[i]=exm;
34          sum2+=exm;
35          ans2=ans2^exm;
36         }
37         ans1=ans1^ans2;
38         for(int i=1;i<=n;i++)
39         {
40          sum1=sum1+(ans1^a[i]);
41         }
42         if(sum1==sum2)
43          cout<<ans1<<endl;
44          else
45          cout<<"-1"<<endl;     
46     }
47     return 0;
48 }

 

相关文章:

  • 2022-01-02
  • 2021-12-30
  • 2022-02-05
  • 2021-08-22
  • 2021-11-25
  • 2021-09-11
  • 2021-12-26
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-22
  • 2022-12-23
  • 2021-10-28
  • 2021-06-11
  • 2022-01-03
相关资源
相似解决方案