#P15603. [ICPC 2021 Jakarta R] XOR Pairs

[ICPC 2021 Jakarta R] XOR Pairs

说明

XOR 是一种按位运算符,当且仅当对应的输入位不同(一个为 1 而另一个为 0)时,结果的该位为 1。XOR 运算符通常用符号 \oplus 表示,在大多数编程语言中则用字符 ^(脱字符)表示。例如,(106)=12(10 \oplus 6) = 12

$$\begin{aligned} 10\ &=>\ \ \ 1010 \\ 6\ &=>\ \ \ 0110 \\ \quad\ &----\ \oplus \\ \quad\ & \quad \quad \quad 1100\ \ =>\ 12 \\ \end{aligned}$$

本题中,给定一个整数 NN 和一个整数集合 S1..MS_{1..M}。你的任务是计算有多少对整数 A,B\langle A, B \rangle 满足 1A,B(AB)N1 \leq A, B \leq (A \oplus B) \leq N,且 (AB)S(A \oplus B) \notin S

例如,令 N=10N = 10S1..4={4,6,7,10}S_{1..4} = \{4, 6, 7, 10\}。共有 6 对 A,B\langle A, B \rangle 满足条件。

  • 1,2(12)=3\langle 1, 2 \rangle \rightarrow (1 \oplus 2) = 3
  • 1,4(14)=5\langle 1, 4 \rangle \rightarrow (1 \oplus 4) = 5
  • 1,8(18)=9\langle 1, 8 \rangle \rightarrow (1 \oplus 8) = 9
  • 2,1(21)=3\langle 2, 1 \rangle \rightarrow (2 \oplus 1) = 3
  • 4,1(41)=5\langle 4, 1 \rangle \rightarrow (4 \oplus 1) = 5
  • 8,1(81)=9\langle 8, 1 \rangle \rightarrow (8 \oplus 1) = 9

注意,在此例中像 2,4\langle 2, 4 \rangle 这样的对不满足条件,因为 (24)=6(2 \oplus 4) = 66S6 \in S。另一对如 5,1\langle 5, 1 \rangle 也不满足条件,因为它违反了 A,B(AB)A, B \leq (A \oplus B) 的要求。

输入格式

输入第一行包含两个整数 NNMM1N1061 \leq N \leq 10^61M1000001 \leq M \leq 100\,000),分别表示给定的 NN 和整数集合 S1..MS_{1..M} 的大小。下一行包含 MM 个整数 SiS_i1Si1061 \leq S_i \leq 10^6),表示整数集合 S1..MS_{1..M}

输出格式

输出一行一个整数,表示满足 1A,B(AB)N1 \leq A, B \leq (A \oplus B) \leq N(AB)S1..M(A \oplus B) \notin S_{1..M}A,B\langle A, B \rangle 的对数。

10 4
4 6 7 10
6
8 5
4 3 5 8 1
10
20 7
3 7 18 15 12 18 19
50
5 6
1 2 3 4 5 6
0

提示

样例 #1 解释

此为题目描述中的示例。

样例 #2 解释

共有 10 对 A,B\langle A, B \rangle 满足条件。

  • 1,6(16)=7\langle 1, 6 \rangle \rightarrow (1 \oplus 6) = 7
  • 2,4(24)=6\langle 2, 4 \rangle \rightarrow (2 \oplus 4) = 6
  • 2,5(25)=7\langle 2, 5 \rangle \rightarrow (2 \oplus 5) = 7
  • 3,4(34)=7\langle 3, 4 \rangle \rightarrow (3 \oplus 4) = 7
  • 3,5(35)=6\langle 3, 5 \rangle \rightarrow (3 \oplus 5) = 6
  • 4,2(42)=6\langle 4, 2 \rangle \rightarrow (4 \oplus 2) = 6
  • 4,3(43)=7\langle 4, 3 \rangle \rightarrow (4 \oplus 3) = 7
  • 5,2(52)=7\langle 5, 2 \rangle \rightarrow (5 \oplus 2) = 7
  • 5,3(53)=6\langle 5, 3 \rangle \rightarrow (5 \oplus 3) = 6
  • 6,1(61)=7\langle 6, 1 \rangle \rightarrow (6 \oplus 1) = 7

翻译由 DeepSeek 完成