20220320校内考试 T1 hat 题解
题目描述
给出一个正偶数 ,有
个整数
,并定义数组 b ,使
除
外的所有数
的异或和。
给出数组 b ,求 a 。
解法
由数组 b 的定义可知,设 B 为数组 b 的异或和,所以 B 就等于每一个 的异或和(因为每个
都异或了 n-1 次,且 n 是偶数,
)。那么
,所以
,由于异或满足结合律,则
,我们要求的
它自己就冒出来了。(有点像小学数学的异或版)
所以只需要求出异或和 B,然后一个一个地异或输出就好了。
CODE
const int mn=2e5+10;
const int mm=2e5+10;
const int mod=1e9+7;
const ll inf=0x3f3f3f3f3f3f3f3f;
const ll fni=0xc0c0c0c0c0c0c0c0;
ll n,xor_sum,b[mn];
inline void read_init(){
n=read<ll>();
for(ll i=1;i<=n;i++)
b[i]=read<ll>();
}
int main(){
// freopen("hat.in","r",stdin);
// freopen("hat.out","w",stdout);
read_init();
for(ll i=1;i<=n;i++)
xor_sum^=b[i];
for(ll i=1;i<=n;i++)
write(xor_sum^b[i],2);
puts("");
return 0;
}