CF2071B.Perfecto
普及-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
若一个长度为 n 的排列 p ∗ 满足:对于每个下标 i(1≤i≤n),前 i 个元素的和 p1+p2+…+pi 不是完全平方数 †,则称该排列为完美排列。
你需要构造完美排列。给定正整数 n,找出一个长度为 n 的完美排列,若不存在则输出 −1。
∗ 长度为 n 的排列是指由 1 到 n 的 n 个不同整数按任意顺序组成的数组。例如,[2,3,1,5,4] 是排列,但 [1,2,2] 不是排列(数字 2 重复出现),[1,3,4] 也不是排列(当 n=3 时出现数字 4)。
† 完全平方数是指某个整数的平方,例如 9=32 是完全平方数,但 8 和 14 不是。
输入格式
每个测试包含多个测试用例。第一行包含测试用例数量 t(1≤t≤104)。接下来是各个测试用例的描述。
每个测试用例仅包含一行,包含一个整数 n(1≤n≤5⋅105)。
保证所有测试用例的 n 之和不超过 106。
输出格式
对于每个测试用例:
- 若无解,输出单个整数 −1;
- 否则,输出 n 个整数 p1,p2,…,pn —— 你找到的完美排列。
若存在多个解,输出任意一个即可。
输入输出样例
输入#1
3 1 4 5
输出#1
-1 2 4 1 3 5 1 4 3 2
说明/提示
第一个测试用例中,当 n=1 时唯一可能的排列是 p=[1],但它不满足完美条件:
- p1=1=x2(当 x=1 时成立)。
第二个测试用例中,当 n=4 时一个可能的完美排列是 p=[2,4,1,3]:
- p1=2=x2;
- p1+p2=2+4=6=x2;
- p1+p2+p3=2+4+1=7=x2;
- p1+p2+p3+p4=2+4+1+3=10=x2。
第三个测试用例中,当 n=5 时一个可能的完美排列是 p=[5,1,4,3,2]:
- p1=5=x2;
- p1+p2=5+1=6=x2;
- p1+p2+p3=5+1+4=10=x2;
- p1+p2+p3+p4=5+1+4+3=13=x2;
- p1+p2+p3+p4+p5=5+1+4+3+2=15=x2。
翻译由 DeepSeek R1 完成
输入解题思路,AI测评打分。不知道怎么写?