AT_pakencamp_2023_day1_k Or Set
题目描述
给定一个正整数 $M$ 和一个长度为 $N$ 的非负整数序列 $A=(A_1,A_2,\dots ,A_N)$。这里保证 $0 \leq A_i \leq 2^M-1$。另外,存在一个最初为 $X=0$ 的整数 $X$。
你可以将 $A$ 的元素任意重新排列,然后按 $i=1,2,\ldots,N$ 的顺序依次进行如下操作:
- 如果 $X\ \mathrm{or}\ A_i \neq 2^M-1$,则将 $X$ 替换为 $X\ \mathrm{or}\ A_i$。
请你计算,作为操作结束后 $X$ 可能取到的不同值的个数。
这里的 $\mathrm{or}$ 指按位或运算。对于整数 $a, b$,按位或 $a\ \mathrm{or}\ b$ 的定义如下:当 $a, b$ 的二进制表示下第 $2^k \ (0 \leq k)$ 位中只要有一个为 $1$,则 $a\ \mathrm{or}\ b$ 的该位也为 $1$,否则为 $0$。
例如,$12\ \mathrm{or}\ 6=14$。二进制形式为 $1100\ \mathrm{or}\ 0110=1110$。
输入格式
输入按照以下格式从标准输入读入。
> $N$ $M$ $A_1$ $A_2$ $\ldots$ $A_N$
输出格式
请输出最终可能的 $X$ 的取值个数。
说明/提示
### 样例解释 1
最终 $X$ 可能的值有 $3$ 和 $6$,共 $2$ 种可能。
例如,若 $A=(4,3,6)$,操作过程如下:
- $X \ \mathrm{or}\ A_1 = 0 \ \mathrm{or}\ 4 = 4 \neq 2^3-1$,所以将 $X$ 更新为 $4$。
- $X \ \mathrm{or}\ A_2 = 4 \ \mathrm{or}\ 3 = 7 = 2^3-1$,所以不进行操作。
- $X \ \mathrm{or}\ A_3 = 4 \ \mathrm{or}\ 6 = 6 \neq 2^3-1$,所以将 $X$ 更新为 $6$。
因此,最终 $X$ 的值为 $6$。
### 数据范围
- $1 \leq N \leq 2\times 10^5$
- $1 \le M \le 30$
- $0 \le A_i < 2^M$
- 输入均为整数。
由 ChatGPT 5 翻译