#P16620. [GKS 2017 #C] Ambiguous Cipher

[GKS 2017 #C] Ambiguous Cipher

题目描述

Susie 和 Calvin 是同班同学。Calvin 希望在课堂上给 Susie 传纸条时,不被老师或其他同学知道他们谈论的内容,以防纸条落入不该看到的人手中。Calvin 设计了一套加密系统来加密他的消息。

Calvin 每次只传给 Susie 一个单词,该单词仅由大写字母组成,因为 Calvin 非常兴奋能与 Susie 交流。每个单词的加密方式如下:

  • Calvin 根据字母在字母表中的位置为每个字母分配一个数字,其中 A=0\text{A} = 0,B=1\text{B} = 1,…,Z=25\text{Z} = 25。
  • 对于单词中的每个字母,Calvin 通过将该字母相邻的 11 或 22 个字母的值相加,来确定该字母的加密值。他取该和对 2626 取模,得到该字母的新值。然后 Calvin 再根据字母表位置将数值转换回大写字母。
  • 加密后的单词是通过对单词中的每个字母使用此方法加密得到的。每个字母的加密仅基于原始未加密消息中的字母,而不依赖于任何已经加密过的字母。

让我们来看 Calvin 正在为 Susie 写的其中一张便条。由于 Calvin 总是很饿,他想让 Susie 知道他还想吃东西。Calvin 对单词 SOUP 进行加密的过程如下:

  • S=18\text{S}=18,O=14\text{O}=14,U=20\text{U}=20,P=15\text{P}=15。
  • Calvin 根据每个字母相邻字母的值对其进行加密:
    • 第一个字母:14 mod 26=1414 \bmod 26 = 14。
    • 第二个字母:(18+20) mod 26=12(18+20) \bmod 26 = 12。
    • 第三个字母:(14+15) mod 26=3(14+15) \bmod 26 = 3。
    • 第四个字母:20 mod 26=2020 \bmod 26 = 20。
  • 数值 14,12,3,2014, 12, 3, 20 对应的字母为 OMDU,这就是 Calvin 会在便条上写给 Susie 的加密单词。

保证 Calvin 不会发送给 Susie 任何完全无法解密的单词。例如,Calvin 不会发送单词 APE,因为它没有任何有效的解密(即,不存在一个单词,Calvin 对其加密后能得到 APE)。

然而,Calvin 的系统并不完美,他发送给 Susie 的一些单词实际上可以解密成多个单词,从而产生歧义!例如,BCB 可以解密成 ABC 或 CBA 等可能性。

Susie 昨晚为了完成学校项目又熬了一个通宵,她实在太累,无法解密 Calvin 的消息。她需要你的帮助!

输入格式

输入的第一行给出测试用例的数量 TT。接下来有 TT 个测试用例。每个测试用例是一行,包含一个由大写字母组成的字符串 WW:Calvin 发送的加密单词。

输出格式

对于每个测试用例,输出一行,格式为 Case #x: y,其中 xx 是测试用例编号(从 11 开始),yy 是解密后的单词,如果无法唯一确定解密后的单词,则输出 AMBIGUOUS。

3
OMDU
BCB
AOAAAN
Case #1: SOUP
Case #2: AMBIGUOUS
Case #3: BANANA

提示

请注意,最后一个样例不会出现在小数据集中。

样例 #1 和 #2 已在题目描述中解释。

在样例 #3 中,BANANA 是唯一加密后得到 AOAAAN 的单词。

限制条件

1≤T≤1001 \le T \le 100。

WW 仅由大写英文字母组成。

WW 可以解密为一个或多个单词(即 WW 是某个单词加密后的结果)。

WW 不会解密成单词 AMBIGUOUS(你只会在解密存在歧义时输出该词)。

小数据集(测试集 1 – 可见)

2≤2 \le WW 的长度 ≤4\le 4。

大数据集(测试集 2 – 隐藏)

2≤2 \le WW 的长度 ≤50\le 50。

翻译由 DeepSeek V4 Pro 完成