CF2091C.Combination Lock

入门

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

在 IT Campus "NEIMARK" 中,有几个开发重大编程竞赛题目的绝密房间。要进入其中一个房间,必须通过选择正确的密码来解锁一个圆形锁。该密码每天更新一次。

今天的密码是一个从 11 到 nn 的排列$$∗^{\text{∗}}$$,且满足其每个循环位移$$†^{\text{†}}$$中恰好有一个固定点。也就是说,在每一个循环位移中,存在且仅存在一个元素,其值等于它在排列中的位置。

请输出任意一个满足此条件的有效排列。请注意,有效的排列可能不存在,此时请输出 −1-1。

$^{\text{∗}}$$$排列的定义是一个长度为 $n$ 的序列,包含从 $1$ 到 $n$ 的整数,且每个数字恰好出现一次。例如,$(2\ 1\ 3)$、$(1)$、$(4\ 3\ 1\ 2)$ 是排列;而 $(1\ 2\ 2)$、$(3)$、$(1\ 3\ 2\ 5)$ 不是排列。 $$$^{\text{†}}$$$数组的循环位移是指将最后一个元素移动到数组开头得到的数组。一个长度为 $n$ 的排列恰好有 $n$ 个循环位移。

输入格式

每个测试包含多个测试用例。第一行包含测试用例的数量 tt (1≤t≤5001 \leq t \leq 500)。接下来是每个测试用例的描述。

每个测试用例单独一行,包含一个整数 nn (1≤n≤2⋅1051 \leq n \leq 2 \cdot 10^5)。

保证所有测试用例的 nn 之和不超过 2⋅1052 \cdot 10^5。

输出格式

对于每个测试用例,输出满足条件的排列。如果存在多个解,输出任意一个即可。如果不存在符合条件的排列,输出 −1-1。

输入输出样例

  • 输入#1

    3
    4
    5
    3

    输出#1

    -1
    4 1 3 5 2
    1 3 2

说明/提示

在第二个样例中,存在一个排列使得每个循环位移中都有一个固定点(用深红色标出):


第一行表示元素的位置编号,第二行展示了目标排列的所有循环位移。

翻译由 DeepSeek R1 完成

输入解题思路,AI测评打分。不知道怎么写?

首页