#P12952. [GCJ Farewell Round #2] Intruder Outsmarting
[GCJ Farewell Round #2] Intruder Outsmarting
Description
Amiria 是一个谨慎的互联网用户,因此她正在为账户设置双重认证。她使用一种特殊的安全密钥作为额外防护,以智胜那些可能想要窃取它的入侵者。Amiria 的安全密钥需要一个激活码。要输入这个激活码,必须将其放置在带有数字的转轮上,类似于密码挂锁。
Amiria 的安全密钥由 个转轮组成。每个转轮上按顺序印有数字 1 到 。通过一次转轮旋转,用户可以将当前显示的数字移动到下一个或上一个数字。转轮上的数字是循环的,这意味着 的下一个数字是 1,而 1 的前一个数字是 。
这里没有隐藏密码。要激活 Amiria 的安全密钥,需要调整转轮,使得显示的数字序列是回文的。也就是说,数字序列从左到右和从右到左读起来是一样的。为了减慢入侵者的速度,Amiria 对安全密钥进行了设置,使得转轮只能以 的增量旋转。也就是说,在一次操作中,当前显示数字 的转轮可以调整为显示 或 ,并应用适当的循环调整。具体来说,如果 ,则操作后实际显示的数字是 ;如果 ,则实际显示的数字是 。
Amiria 想检查这个系统会如何减慢试图使用她安全密钥的入侵者。给定转轮的数量和每个转轮当前显示的数字,找到使显示的数字序列成为回文所需的最少操作次数,或者报告这是不可能的。
Input Format
输入的第一行给出测试用例的数量 。随后是 个测试用例。每个测试用例包含两行。测试用例的第一行包含 3 个整数 、 和 :分别表示 Amiria 安全密钥中的转轮数量、每个转轮上显示的数字数量,以及 Amiria 设置的固定增量。测试用例的第二行包含 个整数 $\mathbf{X}_{1}, \mathbf{X}_{2}, \ldots, \mathbf{X}_{\mathbf{W}}$,其中 是从左到右第 个转轮当前显示的数字。
Output Format
对于每个测试用例,输出一行 Case #x: y,其中 是测试用例编号(从 1 开始), 是使显示的数字序列成为回文所需的最少操作次数。如果无法通过允许的操作使数字序列成为回文,则 应为 IMPOSSIBLE。
3
5 5 4
1 4 5 5 4
3 4 2
3 4 3
2 4 2
1 4
Case #1: 3
Case #2: 0
Case #3: IMPOSSIBLE
Hint
样例解释
在样例 #1 中,可以通过 3 次操作将序列调整为 ,这是一个回文序列。具体操作为:对第一个和第四个转轮进行一次加法操作,对第五个转轮进行一次减法操作。无法用更少的操作使序列成为回文。
在样例 #2 中,序列已经是回文的,因此不需要任何操作。
在样例 #3 中,要使序列成为回文,两个数字必须相同。由于转轮只能以 2 的增量移动,而当前两个数字的奇偶性不同,因此无法实现。
数据范围
- 。
- 。
- 对所有 ,。
测试集 1(4 分,可见判定)
- 。
- 。
测试集 2(10 分,可见判定)
- 。
- 。
翻译由 DeepSeek V3 完成
京公网安备 11011102002149号