CF2071B Perfecto
题目描述
若一个长度为 $n$ 的排列 $p$ $^{\text{∗}}$ 满足:对于每个下标 $i$($1 \le i \le n$),前 $i$ 个元素的和 $p_1 + p_2 + \ldots + p_i$ 不是完全平方数 $^{\text{†}}$,则称该排列为完美排列。
你需要构造完美排列。给定正整数 $n$,找出一个长度为 $n$ 的完美排列,若不存在则输出 $-1$。
$^{\text{∗}}$ 长度为 $n$ 的排列是指由 $1$ 到 $n$ 的 $n$ 个不同整数按任意顺序组成的数组。例如,$[2,3,1,5,4]$ 是排列,但 $[1,2,2]$ 不是排列(数字 $2$ 重复出现),$[1,3,4]$ 也不是排列(当 $n=3$ 时出现数字 $4$)。
$^{\text{†}}$ 完全平方数是指某个整数的平方,例如 $9=3^2$ 是完全平方数,但 $8$ 和 $14$ 不是。
输入格式
每个测试包含多个测试用例。第一行包含测试用例数量 $t$($1 \le t \le 10^4$)。接下来是各个测试用例的描述。
每个测试用例仅包含一行,包含一个整数 $n$($1 \le n \le 5 \cdot 10^5$)。
保证所有测试用例的 $n$ 之和不超过 $10^6$。
输出格式
对于每个测试用例:
- 若无解,输出单个整数 $-1$;
- 否则,输出 $n$ 个整数 $p_1,p_2,\ldots,p_n$ —— 你找到的完美排列。
若存在多个解,输出任意一个即可。
说明/提示
第一个测试用例中,当 $n = 1$ 时唯一可能的排列是 $p = [1]$,但它不满足完美条件:
- $p_1 = 1 = x^2$(当 $x = 1$ 时成立)。
第二个测试用例中,当 $n = 4$ 时一个可能的完美排列是 $p = [2, 4, 1, 3]$:
- $p_1 = 2 \neq x^2$;
- $p_1 + p_2 = 2 + 4 = 6 \neq x^2$;
- $p_1 + p_2 + p_3 = 2 + 4 + 1 = 7 \neq x^2$;
- $p_1 + p_2 + p_3 + p_4 = 2 + 4 + 1 + 3 = 10 \neq x^2$。
第三个测试用例中,当 $n = 5$ 时一个可能的完美排列是 $p = [5, 1, 4, 3, 2]$:
- $p_1 = 5 \neq x^2$;
- $p_1 + p_2 = 5 + 1 = 6 \neq x^2$;
- $p_1 + p_2 + p_3 = 5 + 1 + 4 = 10 \neq x^2$;
- $p_1 + p_2 + p_3 + p_4 = 5 + 1 + 4 + 3 = 13 \neq x^2$;
- $p_1 + p_2 + p_3 + p_4 + p_5 = 5 + 1 + 4 + 3 + 2 = 15 \neq x^2$。
翻译由 DeepSeek R1 完成