[INFOR] 19 啦啦啦

題目連結:https://oj.infor.org/problems/19
  由於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;
} 

留言

這個網誌中的熱門文章

Shellshock.io從入門到上手(針對單狙)(沒有圖片、影片版本)

[TIOJ] 1007燈泡問題