CF742B的题解
(一)
由异或的性质知,如果 \(a \oplus b=c\),那么 \(a \oplus c=b\)。
对于每一个数 \(a\),搜它前面有几个 \(b=a \oplus x\)。
坑点:要开 long long,数组有开大一点。
(二)
AC 代码。
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,x,sum[100001],ans;
signed main(){
scanf("%lld%lld",&n,&x);
for(int i=1;i<=n;i++){
int a;
scanf("%lld",&a);
ans+=sum[a^x];
sum[a]++;
}
printf("%lld",ans);
return 0;
}

浙公网安备 33010602011771号