QOJ.ac

QOJ

Time Limit: 20 s Memory Limit: 1024 MB Total points: 36

#12429. 过度随机化

Statistics

说明:每当本题提到“随机选择”时,均指“在所有有效可能性中均匀随机选择,且与其他所有选择相互独立”。

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$。

样例输入过大,无法直接显示,因此我们提供可下载的文件作为输入和输出。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.