A91409.Intruder Outsmarting
普及+/提高
通过率:0%
时间限制:1.00s
内存限制:128MB
题目描述
Amiria 是一个谨慎的互联网用户,因此她正在为账户设置双重认证。她使用一种特殊的安全密钥作为额外防护,以智胜那些可能想要窃取它的入侵者。Amiria 的安全密钥需要一个激活码。要输入这个激活码,必须将其放置在带有数字的转轮上,类似于密码挂锁。
Amiria 的安全密钥由 W 个转轮组成。每个转轮上按顺序印有数字 1 到 N。通过一次转轮旋转,用户可以将当前显示的数字移动到下一个或上一个数字。转轮上的数字是循环的,这意味着 N 的下一个数字是 1,而 1 的前一个数字是 N。
这里没有隐藏密码。要激活 Amiria 的安全密钥,需要调整转轮,使得显示的数字序列是回文的。也就是说,数字序列从左到右和从右到左读起来是一样的。为了减慢入侵者的速度,Amiria 对安全密钥进行了设置,使得转轮只能以 D 的增量旋转。也就是说,在一次操作中,当前显示数字 x 的转轮可以调整为显示 x−D 或 x+D,并应用适当的循环调整。具体来说,如果 x−D<1,则操作后实际显示的数字是 x−D+N;如果 x+D>N,则实际显示的数字是 x+D−N。
Amiria 想检查这个系统会如何减慢试图使用她安全密钥的入侵者。给定转轮的数量和每个转轮当前显示的数字,找到使显示的数字序列成为回文所需的最少操作次数,或者报告这是不可能的。
输入格式
输入的第一行给出测试用例的数量 T。随后是 T 个测试用例。每个测试用例包含两行。测试用例的第一行包含 3 个整数 W、N 和 D:分别表示 Amiria 安全密钥中的转轮数量、每个转轮上显示的数字数量,以及 Amiria 设置的固定增量。测试用例的第二行包含 W 个整数 X1,X2,…,XW,其中 Xi 是从左到右第 i 个转轮当前显示的数字。
输出格式
对于每个测试用例,输出一行 Case #x: y,其中 x 是测试用例编号(从 1 开始),y 是使显示的数字序列成为回文所需的最少操作次数。如果无法通过允许的操作使数字序列成为回文,则 y 应为 IMPOSSIBLE。
输入输出样例
输入#1
3 5 5 4 1 4 5 5 4 3 4 2 3 4 3 2 4 2 1 4
输出#1
Case #1: 3 Case #2: 0 Case #3: IMPOSSIBLE
说明/提示
样例解释
在样例 #1 中,可以通过 3 次操作将序列调整为 5 4 5 4 5,这是一个回文序列。具体操作为:对第一个和第四个转轮进行一次加法操作,对第五个转轮进行一次减法操作。无法用更少的操作使序列成为回文。
在样例 #2 中,序列已经是回文的,因此不需要任何操作。
在样例 #3 中,要使序列成为回文,两个数字必须相同。由于转轮只能以 2 的增量移动,而当前两个数字的奇偶性不同,因此无法实现。
数据范围
- 1≤T≤100。
- 1≤D≤N−1。
- 对所有 i,1≤Xi≤N。
测试集 1(4 分,可见判定)
- 2≤W≤5。
- 2≤N≤5。
测试集 2(10 分,可见判定)
- 2≤W≤1000。
- 2≤N≤109。