题目将会给你 n n n ( 1 ≤ n ≤ 1000000 ) (1\le n\le 1000000) (1≤n≤1000000)个数字组成的数列 a a a ( a i ≤ 2 30 ) (a_i\le 2^{30}) (ai≤230),和一个 k k k ( 1 ≤ k ≤ 2 30 ) (1\le k\le 2^{30}) (1≤k≤230),请输出有多少组 i , j i,j i,j满足 a i a_i ai x o r xor xor a j = k a_j=k aj=k。
解题思路
我们可以先来模拟一下: ( 11001011010010010111010010111 ) 2 (11001011010010010111010010111)_2 (11001011010010010111010010111)2 x o r xor xor ? = ( 11001011010010010111010100100 ) 2 ?=(11001011010010010111010100100)_2 ?=(11001011010010010111010100100)2 想要得到" ? ? ?",我们可以先分析一下。众所周知, a a a x o r xor xor k = b k=b k=b,那么, a a a x o r xor xor b = k b=k b=k,也就是说,在题目中,如果 a i a_i ai x o r xor xor a j = k a _j=k aj=k,那么 a i = a j a_i=a_j ai=aj x o r xor xor k k k,所以,我们可以遍历每个i,如果 a i a_i ai x o r xor xor a j = k a_j=k aj=k,中的 j j j存在,那么 a i a_i ai x o r xor xor k k k就必定存在与这个数列中。
第一行有两个整数,分别为 n ( 1 ≤ n ≤ 1000000 ) n(1\le n\le 1000000) n(1≤n≤1000000)和 k ( 1 ≤ k ≤ 2 30 ) k(1\le k\le 2^{30}) k(1≤k≤230) 第二行有 n n n个数,分别为 a 1 a_1 a1至 a n a_n an。
输出格式
只有一个数,为满足 a i a_i ai x o r xor xor a j = k a_j=k aj=k中 i i i 和 j j j 的组数。
样例
输入
5 1 1 4 2 2 5
输出
2
样例解释
两组分别为 ( a 2 , a 5 ) (a_2,a_5) (a2,a5)和 ( a 5 , a 2 ) (a_5,a_2) (a5,a2),也就是 4 4 4 x o r xor xor 5 = 1 5=1 5=1和 5 5 5 x o r xor xor 4 = 1 4=1 4=1。