#P16620. [GKS 2017 #C] Ambiguous Cipher
[GKS 2017 #C] Ambiguous Cipher
题目描述
Susie 和 Calvin 是同班同学。Calvin 希望在课堂上给 Susie 传纸条时,不被老师或其他同学知道他们谈论的内容,以防纸条落入不该看到的人手中。Calvin 设计了一套加密系统来加密他的消息。
Calvin 每次只传给 Susie 一个单词,该单词仅由大写字母组成,因为 Calvin 非常兴奋能与 Susie 交流。每个单词的加密方式如下:
- Calvin 根据字母在字母表中的位置为每个字母分配一个数字,其中 ,,…,。
- 对于单词中的每个字母,Calvin 通过将该字母相邻的 或 个字母的值相加,来确定该字母的加密值。他取该和对 取模,得到该字母的新值。然后 Calvin 再根据字母表位置将数值转换回大写字母。
- 加密后的单词是通过对单词中的每个字母使用此方法加密得到的。每个字母的加密仅基于原始未加密消息中的字母,而不依赖于任何已经加密过的字母。
让我们来看 Calvin 正在为 Susie 写的其中一张便条。由于 Calvin 总是很饿,他想让 Susie 知道他还想吃东西。Calvin 对单词 SOUP 进行加密的过程如下:
- ,,,。
- Calvin 根据每个字母相邻字母的值对其进行加密:
- 第一个字母:。
- 第二个字母:。
- 第三个字母:。
- 第四个字母:。
- 数值 对应的字母为
OMDU,这就是 Calvin 会在便条上写给 Susie 的加密单词。
保证 Calvin 不会发送给 Susie 任何完全无法解密的单词。例如,Calvin 不会发送单词 APE,因为它没有任何有效的解密(即,不存在一个单词,Calvin 对其加密后能得到 APE)。
然而,Calvin 的系统并不完美,他发送给 Susie 的一些单词实际上可以解密成多个单词,从而产生歧义!例如,BCB 可以解密成 ABC 或 CBA 等可能性。
Susie 昨晚为了完成学校项目又熬了一个通宵,她实在太累,无法解密 Calvin 的消息。她需要你的帮助!
输入格式
输入的第一行给出测试用例的数量 。接下来有 个测试用例。每个测试用例是一行,包含一个由大写字母组成的字符串 :Calvin 发送的加密单词。
输出格式
对于每个测试用例,输出一行,格式为 Case #x: y,其中 是测试用例编号(从 开始), 是解密后的单词,如果无法唯一确定解密后的单词,则输出 AMBIGUOUS。
3
OMDU
BCB
AOAAAN
Case #1: SOUP
Case #2: AMBIGUOUS
Case #3: BANANA
提示
请注意,最后一个样例不会出现在小数据集中。
样例 #1 和 #2 已在题目描述中解释。
在样例 #3 中,BANANA 是唯一加密后得到 AOAAAN 的单词。
限制条件
。
仅由大写英文字母组成。
可以解密为一个或多个单词(即 是某个单词加密后的结果)。
不会解密成单词 AMBIGUOUS(你只会在解密存在歧义时输出该词)。
小数据集(测试集 1 – 可见)
的长度 。
大数据集(测试集 2 – 隐藏)
的长度 。
翻译由 DeepSeek V4 Pro 完成