[INFOR] 19 啦啦啦
題目連結:https://oj.infor.org/problems/19
由於a XOR b = x 的話,那麼 a XOR x = b,這應該挺顯然的吧?所以就sort後然後算一下有幾個就好了,不過要注意有可能有多個所以要upper_bound減去lower_bound。
由於a XOR b = x 的話,那麼 a XOR x = b,這應該挺顯然的吧?所以就sort後然後算一下有幾個就好了,不過要注意有可能有多個所以要upper_bound減去lower_bound。
#include<bits/stdc++.h> using namespace std; int n,x; vector<int> a; int main() { cin >> n >> x; while(n--) { int aa; cin >> aa; a.push_back(aa); } sort(a.begin(),a.end()); int ans = 0; for(int i = 0; i < a.size(); i++) { int d1 = lower_bound(a.begin()+i+1,a.end(),(a[i]^x))-a.begin(); int d2 = upper_bound(a.begin()+i+1,a.end(),(a[i]^x))-a.begin(); ans += d2-d1; } cout << ans << endl; }
留言
張貼留言