说明:每当本题提到“随机选择”时,均指“在所有有效可能性中均匀随机选择,且与其他所有选择相互独立”。
Banana Rocks Inc. 公司刚刚编写了一项基于云的高级随机数生成服务,注定要成为随机性的新黄金标准。
最初的设计是,一组服务器接收一个最高为 $U$ 位十进制数字的正整数 $M$ 的请求,然后从 $1$ 到 $M$(包含边界)的范围内随机响应一个整数。然而,服务器并没有像往常一样用 $0$ 到 $9$ 的数字写出输出,而是进行了“过度随机化”。每台服务器都有一个包含 $10$ 个不同大写英文字母的随机子集作为数字,并有一个将这些字母映射到 $0$ 到 $9$ 之间唯一值的随机映射。
当前情况的正式描述如下:每台服务器都有一个由恰好 $10$ 个不同大写英文字母组成的数字字符串 $D$。该数字字符串定义了字母与十进制数字之间的映射:$D$ 从左起第 $j$ 个字符(从 $0$ 开始计数)即为值 $j$ 的十进制数字。例如,如果 $D$ 是 CODEJAMFUN,则 C 代表数字 $0$,$O$ 代表数字 $1$,而 $N$ 代表数字 $9$。使用该数字字符串时,数字 $379009$ 将被编码为 EFNCCN。
当接收到带有整数参数 $M_i$ 的第 $i$ 次查询时,服务器会:
- 在 $1$ 到 $M_i$ 的闭区间内随机选择一个整数 $N_i$,
- 使用 $D$ 中从左起第 $j$ 个字符(从 $0$ 开始计数)作为值 $j$ 的数字,将其写成不含前导零的十进制字符串,并
- 返回结果字符串作为响应 $R_i$。
我们收集了一些数据,相信可以利用这些数据从每台服务器中恢复出秘密的数字字符串 $D$。我们向每台服务器发送了 $10^4$ 次查询。对于每次查询,我们从 $1$ 到 $10^U - 1$ 的闭区间内随机选择一个值 $M_i$,并收到了响应 $R_i$,这是一个最多包含 $U$ 个大写英文字母的字符串。我们记录了这些对 $(M_i, R_i)$。在我们将这些记录移动到新的数据存储设备时,部分服务器记录中的所有整数 $M_i$ 的值都已损坏且无法读取。
你能帮我们找出每台服务器的数字字符串 $D$ 吗?
输入格式
输入的第一行给出测试用例的数量 $T$。接下来是 $T$ 个测试用例。每个测试用例包含一台服务器的记录,并以一行包含单个整数 $U$ 开头,表示我们选择查询该服务器的整数 $M_i$ 的范围上限为 $10^U - 1$(包含边界)。随后是 $10^4$ 行。每一行包含一个整数 $Q_i$(使用 $0$ 到 $9$ 的数字,按常规十进制表示)和一个字符串 $R_i$,分别代表第 $i$ 次查询和响应。如果 $Q_i = -1$,则表示第 $i$ 次查询所使用的整数 $M_i$ 未知。否则,$Q_i = M_i$。
输出格式
对于每个测试用例,输出一行 Case #x: y,其中 $x$ 是测试用例编号(从 $1$ 开始),$y$ 是测试用例 $x$ 中所考察服务器的数字字符串 $D$。
数据范围
每个测试集的时限:$20$ 秒。 内存限制:$1\text{GB}$。 $1 \le T \le 10$。 $D$ 是一个由恰好 $10$ 个不同大写英文字母组成的字符串,从所有此类字符串的集合中独立且均匀随机地选择。 对于所有 $i$,$M_i$ 是从 $1$ 到 $10^U - 1$ 的闭区间内独立且均匀随机地选择的。 对于所有 $i$,$N_i$ 是从 $1$ 到 $M_i$ 的闭区间内独立且均匀随机地选择的。 对于所有 $i$,$R_i$ 是 $N_i$ 的十进制表示,使用 $D$ 中从左起第 $j$ 个字符(从 $0$ 开始计数)作为值 $j$ 的数字。
测试集 1(可见判定)
对于所有 $i$,$Q_i = M_i$。 $U = 2$。
测试集 2(可见判定)
对于所有 $i$,$Q_i = M_i$。 $U = 16$。
测试集 3(可见判定)
对于所有 $i$,$Q_i = -1$。 $U = 16$。
样例输入过大,无法直接显示,因此我们提供可下载的文件作为输入和输出。