CF2056F1 Xor of Median (Easy Version)

题目描述

# Xor of Median (Easy Version) 这是问题的简单版本。版本之间的区别在于,在此版本中,对 $t$、$k$ 和 $m$ 的约束较低。只有在你解决了这个问题的所有版本之后,才能进行hack。 如果满足以下条件,则称长度为 $n$ 的整数序列 $a$ 为好序列: - 令 $\text{cnt}_x$ 为序列 $a$ 中 $x$ 的出现次数。对于所有满足 $0 \le i < j < m$ 的对 $(i, j)$,以下情况中至少有一种必须为真:$\text{cnt}_i = 0$,$\text{cnt}_j = 0$,或 $\text{cnt}_i \le \text{cnt}_j$。换句话说,如果 $i$ 和 $j$ 都出现在序列 $a$ 中,则 $a$ 中 $i$ 的出现次数小于或等于 $a$ 中 $j$ 的出现次数。 给定整数 $n$ 和 $m$。计算所有长度为 $n$、满足 $0 \le a_i < m$ 的好序列 $a$ 的中位数的按位异或值。 请注意,$n$ 的值可能非常大,因此给出的是其二进制表示形式。 $ ^{\text{*}} $ 序列 $a$ 的中位数定义为序列中第 $\left\lfloor\frac{n + 1}{2}\right\rfloor$ 小的值。

输入格式

每个测试包含多个测试用例。第一行包含测试用例的数量 $t$($1 \le t \le 50$)。接下来是测试用例的描述。 每个测试用例的第一行包含两个整数 $k$ 和 $m$($1 \le k \le 200$,$1 \le m \le 500$)——$n$ 的位数和序列 $a$ 中元素的上限。 每个测试用例的第二行包含一个长度为 $k$ 的二进制字符串——$n$ 的二进制表示形式,没有前导零。 保证所有测试用例中 $k$ 的总和不超过 $200$。

输出格式

对于每个测试用例,输出一个整数,表示所有长度为 $n$、满足 $0 \le a_i < m$ 的好序列 $a$ 的中位数的按位异或值。 ## 样例 #1 ### 样例输入 #1 ```cpp 6 2 3 10 2 3 11 5 1 11101 7 9 1101011 17 34 11001010001010010 1 500 1 ``` ### 样例输出 #1 ```cpp 3 2 0 8 32 0 ```

说明/提示

在第一个示例中,$n = 10_2 = 2$ 且 $m = 3$。所有元素小于 $m$ 的可能序列为:$[0, 0]$,$[0, 1]$,$[0, 2]$,$[1, 0]$,$[1, 1]$,$[1, 2]$,$[2, 0]$,$[2, 1]$,$[2, 2]$。它们都是好序列,所以答案是:$0 \oplus 0 \oplus 0 \oplus 0 \oplus 1 \oplus 1 \oplus 0 \oplus 1 \oplus 2 = 3$。 在第二个示例中,$n = 11_2 = 3$ 且 $m = 3$。一些好序列为 $[2, 2, 2]$,$[1, 0, 1]$ 和 $[2, 0, 1]$。然而,序列 $[2, 0, 0]$ 不是好序列,因为 $\text{cnt}_0 = 2$,$\text{cnt}_2 = 1$。因此,如果我们设置 $i = 0$ 和 $j = 2$,则 $i < j$ 成立,但 $\text{cnt}_i \le \text{cnt}_j$ 不成立。