QOJ.ac

QOJ

حد الوقت: 20 s حد الذاكرة: 1024 MB مجموع النقاط: 25

#11452. 密码字谜

الإحصائيات

在 Code Jam 团队中,我们喜欢互相发送全字母句(pangrams),即至少包含英语字母表中每个字母一次的短语。全字母句的一个常见例子是 "the quick brown fox jumps over the lazy dog"。有时我们的全字母句包含机密信息——例如,CJ QUIZ: KNOW BEVY OF DP FLUX ALGORITHMS——因此我们需要确保它们的安全性。

我们查阅了几分钟密码学教科书,了解到对两个大质数的乘积进行因式分解非常困难,因此我们设计了一种基于该事实的加密方案。首先,我们做了一些准备工作:

  • 我们选择了 26 个不同的质数,其中没有一个大于某个整数 $N$。
  • 我们将这些质数按升序排列。然后,将最小的质数分配给字母 A,第二小的质数分配给字母 B,依此类推。
  • 团队中的每个人都记住了这个列表。

现在,每当我们想发送一条全字母句作为消息时,我们首先删除所有空格以形成明文消息。然后,我们写下明文中第一个字母对应的质数与第二个字母对应的质数的乘积。接着,我们写下明文中第二个字母对应的质数与第三个字母对应的质数的乘积,以此类推,最后写下倒数第二个字母对应的质数与最后一个字母对应的质数的乘积。这个新的数值列表就是我们的密文。数值的数量比明文消息中的字符数少 1。

例如,假设 $N = 103$,我们选择使用前 26 个奇质数,因为我们担心偶数太容易被分解。那么 $A = 3, B = 5, C = 7, D = 11$,依此类推,直到 $Z = 103$。再假设我们想要加密上面的 CJ QUIZ... 全字母句,所以我们的明文是 CJQUIZKNOWBEVYOFDPFLUXALGORITHMS。那么密文中的第一个值是 7(C 对应的质数)乘以 31(J 对应的质数)= 217;下一个值是 1891,依此类推,最后以 3053 结束。

我们将为您提供密文消息以及我们使用的 $N$ 值。我们不会告诉您我们使用了哪些质数,也不会告诉您如何解密密文。您认为您仍然可以恢复明文吗?

输入格式

输入的第一行给出了测试用例的数量 $T$。接下来是 $T$ 个测试用例;每个测试用例由两行组成。第一行包含两个整数:如上所述的 $N$,以及密文中数值列表的长度 $L$。第二行包含 $L$ 个整数:密文中的数值列表。

输出格式

对于每个测试用例,输出一行包含 Case #x: y,其中 $x$ 是测试用例编号(从 1 开始),$y$ 是一个由 $L + 1$ 个大写英文字母组成的字符串:即明文。

数据范围

$1 \le T \le 100$。 $25 \le L \le 100$。 明文至少包含每个英文字母一次。

测试集 1(可见)

$101 \le N \le 10000$。

测试集 2(隐藏)

$101 \le N \le 10^{100}$。

样例

样例输入 1

2
103 31
217 1891 4819 2291 2987 3811
1739 2491 4717 445 65 1079 8383
5353 901 187 649 1003 697 3239
7663 291 123 779 1007 3551 1943
2117 1679 989 3053
10000 25
3292937 175597 18779 50429
375469 1651121 2102 3722
2376497 611683 489059 2328901
3150061 829981 421301 76409
38477 291931 730241 959821
1664197 3057407 4267589 4729181
5335543

样例输出 1

Case #1:
CJQUIZKNOWBEVYOFDPFLUXALGORITHMS
Case #2:
SUBDERMATOGLYPHICFJKNQVWXZ

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.