P13187 [GCJ 2016 Qualification] Coin Jam

题目描述

Jamcoin 是一种长度为 $\mathrm{N}$($\mathrm{N} \geqslant 2$)的二进制串,满足以下条件: - 每一位都是 $0$ 或 $1$。 - 首位为 $1$,末位也为 $1$。 - 无论将该串按 $2$ 到 $10$ 进制中的哪一种解释,所得的数都不是质数。 并非所有由 $0$ 和 $1$ 组成的串都是 jamcoin。例如,$101$ 不是 jamcoin,因为它在 $2$ 进制下的数值是 $5$,而 $5$ 是质数。但 $1001$ 是 jamcoin:在 $2$ 到 $10$ 进制下分别对应 $9, 28, 65, 126, 217, 344, 513, 730, 1001$,其中每一个都不是质数。 据说有些社区会用 jamcoin 作为货币。当你把 jamcoin 发送给别人时,礼貌的做法是为每个进制($2$ 到 $10$)下 jamcoin 的数值都提供一个非平凡因子,以证明该 jamcoin 的合法性。(对于正整数 $K$,非平凡因子是指除了 $1$ 和 $K$ 之外的正整数因子。)为方便起见,这些因子需用 $10$ 进制表示。 例如,前述 jamcoin $1001$,对于 $2$ 到 $10$ 进制的解释,可以选择的非平凡因子分别为:$3, 7, 5, 6, 31, 8, 27, 5, 77$。 你能否生成 $\mathrm{N}$ 位、互不相同的 $\mathrm{J}$ 个 jamcoin,并且为每个 jamcoin 提供一组合法性证明?

输入格式

输入的第一行是测试用例数量 $\mathrm{T}$。接下来有 $\mathrm{T}$ 组测试用例,每组一行,包含两个整数 $\mathrm{N}$ 和 $\mathrm{J}$。

输出格式

对于每组测试用例,输出 $\mathrm{J}+1$ 行。第一行只包含 `Case #x:`,其中 $x$ 是测试用例编号(从 $1$ 开始)。接下来的 $\mathrm{J}$ 行,每行包含一个长度为 $\mathrm{N}$ 的 jamcoin,后跟九个整数,第 $i$ 个整数($i$ 从 $1$ 开始)为该 jamcoin 在 $i+1$ 进制下的一个非平凡因子。 所有 jamcoin 必须互不相同。即使因子组不同,也不能输出相同的 jamcoin。

说明/提示

在样例中,为了便于说明,$\mathrm{N}$ 和 $\mathrm{J}$ 取了很小的值。注意,这组样例不会出现在 Small 或 Large 数据集中。 这只是众多合法解中的一种。你也可以用其他 jamcoin 及其因子组。补充说明: - $110111$ 不能作为输出,因为它在 $3$ 进制下为 $337$,而 $337$ 是质数。 - $010101$ 虽然 $10101$ 是 jamcoin,但不能作为输出,因为 jamcoin 必须以 $1$ 开头。 - $101010$ 也不能作为输出,因为 jamcoin 必须以 $1$ 结尾。 - $110011$ 也是 jamcoin,可以出现在输出中,但由于输出必须恰好有 $\mathrm{J}$ 个 jamcoin,不能再多输出。 - 对于样例输出的第一个 jamcoin,后面的第一个数不能是 $1$ 或 $35$,因为这两者是 $35$($100011$ 在 $2$ 进制下)的平凡因子。 **限制条件** - $T = 1$。(只有一组测试数据。) - 保证存在至少 $J$ 个不同的长度为 $N$ 的 jamcoin。 **小数据集(10 分,测试集 1 - 可见)** - $N = 16$。 - $J = 50$。 **大数据集(20 分,测试集 2 - 隐藏)** - $N = 32$。 - $J = 500$。 注意,这道题不同于一般的 Code Jam 题目,你已经提前知道每个输入文件的内容。例如,小数据集的输入文件永远如下: ``` 1 16 50 ``` 因此,你可以在真正下载输入文件和开始计时之前,提前做一些计算。 翻译由 GPT4.1 完成。