A91409.Intruder Outsmarting

普及+/提高

通过率:0%

时间限制:1.00s

内存限制:128MB

题目描述

Amiria 是一个谨慎的互联网用户,因此她正在为账户设置双重认证。她使用一种特殊的安全密钥作为额外防护,以智胜那些可能想要窃取它的入侵者。Amiria 的安全密钥需要一个激活码。要输入这个激活码,必须将其放置在带有数字的转轮上,类似于密码挂锁。

Amiria 的安全密钥由 W\mathbf{W} 个转轮组成。每个转轮上按顺序印有数字 1 到 N\mathbf{N}。通过一次转轮旋转,用户可以将当前显示的数字移动到下一个或上一个数字。转轮上的数字是循环的,这意味着 N\mathbf{N} 的下一个数字是 1,而 1 的前一个数字是 N\mathbf{N}

这里没有隐藏密码。要激活 Amiria 的安全密钥,需要调整转轮,使得显示的数字序列是回文的。也就是说,数字序列从左到右和从右到左读起来是一样的。为了减慢入侵者的速度,Amiria 对安全密钥进行了设置,使得转轮只能以 D\mathbf{D} 的增量旋转。也就是说,在一次操作中,当前显示数字 xx 的转轮可以调整为显示 xDx - \mathbf{D}x+Dx + \mathbf{D},并应用适当的循环调整。具体来说,如果 xD<1x - \mathbf{D} < 1,则操作后实际显示的数字是 xD+Nx - \mathbf{D} + \mathbf{N};如果 x+D>Nx + \mathbf{D} > \mathbf{N},则实际显示的数字是 x+DNx + \mathbf{D} - \mathbf{N}

Amiria 想检查这个系统会如何减慢试图使用她安全密钥的入侵者。给定转轮的数量和每个转轮当前显示的数字,找到使显示的数字序列成为回文所需的最少操作次数,或者报告这是不可能的。

输入格式

输入的第一行给出测试用例的数量 T\mathbf{T}。随后是 T\mathbf{T} 个测试用例。每个测试用例包含两行。测试用例的第一行包含 3 个整数 W\mathbf{W}N\mathbf{N}D\mathbf{D}:分别表示 Amiria 安全密钥中的转轮数量、每个转轮上显示的数字数量,以及 Amiria 设置的固定增量。测试用例的第二行包含 W\mathbf{W} 个整数 X1,X2,,XW\mathbf{X}_{1}, \mathbf{X}_{2}, \ldots, \mathbf{X}_{\mathbf{W}},其中 Xi\mathbf{X}_{i} 是从左到右第 ii 个转轮当前显示的数字。

输出格式

对于每个测试用例,输出一行 Case #x: y,其中 xx 是测试用例编号(从 1 开始),yy 是使显示的数字序列成为回文所需的最少操作次数。如果无法通过允许的操作使数字序列成为回文,则 yy 应为 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 55 \ 4 \ 5 \ 4 \ 5,这是一个回文序列。具体操作为:对第一个和第四个转轮进行一次加法操作,对第五个转轮进行一次减法操作。无法用更少的操作使序列成为回文。

在样例 #2 中,序列已经是回文的,因此不需要任何操作。

在样例 #3 中,要使序列成为回文,两个数字必须相同。由于转轮只能以 2 的增量移动,而当前两个数字的奇偶性不同,因此无法实现。

数据范围

  • 1T1001 \leq \mathbf{T} \leq 100
  • 1DN11 \leq \mathbf{D} \leq \mathbf{N}-1
  • 对所有 ii1XiN1 \leq \mathbf{X}_{i} \leq \mathbf{N}

测试集 1(4 分,可见判定)

  • 2W52 \leq \mathbf{W} \leq 5
  • 2N52 \leq \mathbf{N} \leq 5

测试集 2(10 分,可见判定)

  • 2W10002 \leq \mathbf{W} \leq 1000
  • 2N1092 \leq \mathbf{N} \leq 10^{9}
首页