#P12991. [GCJ 2022 #1C] Squary

    ID: 12815 远端评测题 5000~10000ms 1024MiB 尝试: 0 已通过: 0 难度: 8 上传者: 标签>数学2022Special Judge构造Google Code Jam

[GCJ 2022 #1C] Squary

Description

加法与平方运算不可交换。也就是说,一个整数列表中所有元素的和的平方,不一定等于这些元素各自的平方和。然而,某些列表满足这一性质,例如 [3,2,6][3,-2,6],因为 (3+(2)+6)2=49=32+(2)2+62(3+(-2)+6)^{2}=49=3^{2}+(-2)^{2}+6^{2}。我们将这样的列表称为平方性列表

给定一个(不一定是平方性的)由较小整数构成的列表,我们想知道是否可以通过添加至少 11 个、至多 K\mathbf{K} 个元素,使得最终的列表具有平方性。每个添加的元素必须是介于 1018-10^{18}101810^{18}(含)之间的整数,且这些元素不必互不相同,也不必与初始列表中的元素不同。

Input Format

输入的第一行给出测试用例的数量 T\mathbf{T}。接下来是 T\mathbf{T} 个测试用例。每个测试用例由两行描述。第一行包含两个整数 N\mathbf{N}K\mathbf{K},分别表示初始列表的元素数量和最多可添加的元素数量。第二行包含 N\mathbf{N} 个整数 $\mathbf{E}_{1}, \mathbf{E}_{2}, \ldots, \mathbf{E}_{\mathbf{N}}$,表示初始列表的 N\mathbf{N} 个元素。

Output Format

对于每个测试用例,输出一行 Case #x: y,其中 xx 是测试用例编号(从 1 开始)。如果可以通过添加至少 1 个、至多 K\mathbf{K} 个元素(每个元素介于 1018-10^{18}101810^{18} 之间)使得列表元素的平方和等于元素和的平方,则 yy 应为 z1z2zrz_{1} z_{2} \ldots z_{r},其中 1rK1 \leq r \leq \mathbf{K}ziz_{i} 为添加的元素。如果无法实现,则 yy 应为 IMPOSSIBLE

4
2 1
-2 6
2 1
-10 10
1 1
0
3 1
2 -2 2
Case #1: 3
Case #2: IMPOSSIBLE
Case #3: -1000000000000000000
Case #4: 2
3
3 10
-2 3 6
6 2
-2 2 1 -2 4 -1
1 12
-5
Case #1: 0
Case #2: -1 15
Case #3: 1 1 1 1 1 1 1 1 1 1 1

Hint

样例解释

在样例 #1 中,我们可以得到题目描述中的示例列表。

在样例 #2 中,必须恰好添加一个元素 xx。此时整个列表的和为 xx,其平方为 x2x^{2}。而所有元素的平方和为 x2+102+(10)2=x2+200x2x^{2}+10^{2}+(-10)^{2}=x^{2}+200 \neq x^{2},因此该用例无法实现。

在样例 #3 中,[1018,1018]\left[-10^{18}, 10^{18}\right] 范围内的任意整数均为合法答案。

在样例 #4 中,注意输入可能包含重复元素,且通过添加元素创建更多重复也是合法的。

样例 2 符合测试集 2 的限制,但不会用于测试你的提交。

在附加样例的用例 #1 中,我们给出了题目描述中的示例列表(已是平方性列表),但需要至少添加一个元素。添加 0 可以保持列表的平方性。

在附加样例的用例 #3 中,我们展示了一种可能的合法答案。注意可以添加少于 K\mathbf{K} 个元素;此处 K=12\mathbf{K}=12,但我们仅添加了 11 个元素。

数据范围

  • 1T1001 \leq \mathbf{T} \leq 100
  • 1N10001 \leq \mathbf{N} \leq 1000
  • 对所有 ii1000Ei1000-1000 \leq \mathbf{E}_{\mathbf{i}} \leq 1000

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

  • 时间限制:5 秒。
  • K=1\mathbf{K}=1

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

  • 时间限制:10 秒。
  • 2K10002 \leq \mathbf{K} \leq 1000

翻译由 DeepSeek V3 完成