点击打开链接
//题意:求ai^aj=x 的(i,j)&&i /两边同^ai -> aj=x^ai 枚举i用map统计aj=x^ai出现次数即可
//坑点ans爆int 1e5 x=3 1 2 1 2.......答案约等于1/2(1e5*1e5) 统计出来的ij的个数一一对应,则i>j个数也为k
#include #include #include #include #include #include using namespace std; typedef long long ll; const int N=1e5+20; int used[N]; int a[N]; map mk; int main() { int n,x; cin>>n>>x; ll ans=0; for(int i=1;i<=n;i++) { scanf("%d",&a[i]); mk[a[i]]++; } //题意:求ai^aj=x 的(i,j)&&i aj=x^ai //枚举i用map统计aj=x^ai出现次数即可 for(int i=1;i<=n;i++) { //aj=a[i]^x if(x==0) ans+=mk[a[i]^x]-1; else ans+=mk[a[i]^x]; } cout<