time limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard output
题意:
找出给定数列里两两异或值为x的组合个数
a^b=x; x^a=b; x^b=a;
x已经给定 我们只需循环a找是否有b与之对应。
附AC代码:
1 #include<bits/stdc++.h> 2 using namespace std; 3 int a[100010]; 4 int main(){ 5 map<int ,int > m; 6 int n,x; 7 cin>>n>>x; 8 for(int i=1;i<=n;i++){ 9 scanf("%d",a+i); 10 } 11 long long ans=0; 12 for(int i=1;i<=n;i++){ 13 if(m.count(x^a[i])) //找到返回1 否则返回0 14 ans+=m[x^a[i]]; 15 m[a[i]]++; 16 } 17 cout<<ans<<endl; 18 return 0; 19 }