CF1858C.Yet Another Permutation Problem
入门
通过率:0%
时间限制:2.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Alex got a new game called "GCD permutations" as a birthday present. Each round of this game proceeds as follows:
- First, Alex chooses a permutation† a1,a2,…,an of integers from 1 to n.
- Then, for each i from 1 to n, an integer di=gcd(ai,a(imodn)+1) is calculated.
- The score of the round is the number of distinct numbers among d1,d2,…,dn.
Alex has already played several rounds so he decided to find a permutation a1,a2,…,an such that its score is as large as possible.
Recall that gcd(x,y) denotes the greatest common divisor (GCD) of numbers x and y, and xmody denotes the remainder of dividing x by y.
†A permutation of length n is an array consisting of n distinct integers from 1 to n in arbitrary order. For example, [2,3,1,5,4] is a permutation, but [1,2,2] is not a permutation (2 appears twice in the array), and [1,3,4] is also not a permutation (n=3 but there is 4 in the array).
亚历克斯收到了一款名为“最大公约数排列”(GCD permutations)的新游戏作为生日礼物。每轮游戏按如下方式进行:
- 首先,亚历克斯从 1 到 n 的整数中选择一个排列† a1,a2,…,an;
- 然后,对每个 i(从 1 到 n),计算整数 di=gcd(ai,a(imodn)+1);
- 本轮的得分为 d1,d2,…,dn 中不同数值的个数。
亚历克斯已玩过若干轮,因此他决定找出一个排列 a1,a2,…,an,使其得分尽可能大。
请回顾:gcd(x,y) 表示数 x 与 y 的最大公约数(GCD),而 xmody 表示 x 除以 y 所得的余数。
† 长度为 n 的排列是指由 1 到 n 的 n 个互不相同的整数以任意顺序组成的数组。例如,[2,3,1,5,4] 是一个排列,但 [1,2,2] 不是排列(数字 2 在数组中出现了两次),[1,3,4] 也不是排列(此时 n=3,但数组中出现了 4)。
输入格式
The first line of the input contains a single integer t (1≤t≤104) — the number of test cases.
Each test case consists of one line containing a single integer n (2≤n≤105).
It is guaranteed that the sum of n over all test cases does not exceed 105.
输入的第一行包含一个整数 t(1≤t≤104)—— 表示测试用例的数量。
每个测试用例由一行组成,该行包含一个整数 n(2≤n≤105)。
保证所有测试用例的 n 值之和不超过 105。
输出格式
For each test case print n distinct integers a1,a2,…,an (1≤ai≤n) — the permutation with the largest possible score.
If there are several permutations with the maximum possible score, you can print any one of them.
对于每个测试用例,输出 n 个互不相同的整数 a1,a2,…,an(满足 1≤ai≤n)—— 即具有最大可能得分的排列。
如果存在多个具有最大可能得分的排列,你可以输出其中任意一个。
输入输出样例
输入#1
4 5 2 7 10
输出#1
1 2 4 3 5 1 2 1 2 3 6 4 5 7 1 2 3 4 8 5 10 6 9 7
说明/提示
In the first test case, Alex wants to find a permutation of integers from 1 to 5. For the permutation a=[1,2,4,3,5], the array d is equal to [1,2,1,1,1]. It contains 2 distinct integers. It can be shown that there is no permutation of length 5 with a higher score.
In the second test case, Alex wants to find a permutation of integers from 1 to 2. There are only two such permutations: a=[1,2] and a=[2,1]. In both cases, the array d is equal to [1,1], so both permutations are correct.
In the third test case, Alex wants to find a permutation of integers from 1 to 7. For the permutation a=[1,2,3,6,4,5,7], the array d is equal to [1,1,3,2,1,1,1]. It contains 3 distinct integers so its score is equal to 3. It can be shown that there is no permutation of integers from 1 to 7 with a score higher than 3.
在第一个测试用例中,Alex 希望找到一个 1 到 5 的整数排列。对于排列 a=[1,2,4,3,5],数组 d 等于 [1,2,1,1,1]。它包含 2 个不同的整数。可以证明:不存在长度为 5 的排列具有更高的得分。
在第二个测试用例中,Alex 希望找到一个 1 到 2 的整数排列。这样的排列仅有两个:a=[1,2] 和 a=[2,1]。在这两种情况下,数组 d 均等于 [1,1],因此这两个排列都是正确的。
在第三个测试用例中,Alex 希望找到一个 1 到 7 的整数排列。对于排列 a=[1,2,3,6,4,5,7],数组 d 等于 [1,1,3,2,1,1,1]。它包含 3 个不同的整数,因此其得分为 3。可以证明:不存在 1 到 7 的整数排列具有高于 3 的得分。
输入解题思路,AI测评打分。不知道怎么写?