|
||||||||||
数据恢复Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65535/102400 K (Java/Others)Total Submission(s): 116 Accepted Submission(s): 53 Problem Description 你是一名工程师,最近刚上线了一款数据迁移的软件。不幸的是,一个bug潜伏在你的代码之中。 假设要迁移的数据是一个长度为$n$的非负整数序列$a_1,a_2,\dots,a_n$,这个bug会随机产生一个在非负整数$k$,将每个$a_i$都变为$a_i\oplus k$,其中"$\oplus$"表示二进制下按位异或。在这一步之后,bug还会将序列$a$随机打乱。 你紧急上线了一款数据恢复的软件用于稳定用户,但是你还是需要定位出这个bug。如果知道$k$是多少的话,那么定位就简单多了。请写一个程序,给出原始序列和bug序列,找到bug产生的$k$。 Input 第一行包含一个正整数$T(1\leq T\leq 5)$,表示测试数据的组数。 每组数据第一行包含一个正整数$n(1\leq n\leq 100000)$,表示序列的长度。 第二行包含一个长度为$n$的非负整数序列$a_1,a_2,\dots,a_n(0\leq a_i\leq 10^9)$,表示原始序列。 第三行包含一个长度为$n$的非负整数序列$b_1,b_2,\dots,b_n(0\leq b_i\leq 10^9)$,表示被混淆后的序列。 为了贴近实际生产数据,数据是这样生成的: 先在$[0,10^9]$范围内随机生成出序列$a$,然后在$[0,10^9]$范围内随机生成出$k$,将每个$a_i$都异或$k$后再将序列$a$随机打乱得到$b$。 Output 对于每组数据输出一行一个整数,即$k$。如果有多个满足条件的$k$,请输出最小的。 Sample Input
Sample Output
Author Claris Source | ||||||||||
|