D. Super-Permutation
time limit per test2 seconds
memory limit per test256 megabytes
inputstandard input
outputstandard output
A permutation is a sequence n
integers, where each integer from 1
to n
appears exactly once. For example, [1]
, [3,5,2,1,4]
, [1,3,2]
are permutations, while [2,3,2]
, [4,3,1]
, [0]
are not.
Given a permutation a
, we construct an array b
, where bi=(a1+a2+ … +ai)modn
.
A permutation of numbers [a1,a2,…,an]
is called a super-permutation if [b1+1,b2+1,…,bn+1]
is also a permutation of length n
.
Grisha became interested whether a super-permutation of length n
exists. Help him solve this non-trivial problem. Output any super-permutation of length n
, if it exists. Otherwise, output −1
.
Input
The first line contains a single integer t
(1≤t≤104
) — the number of test cases. The description of the test cases follows.
Each test case consists of a single line containing one integer n
(1≤n≤2⋅105
) — the length of the desired permutation.
The sum of n
over all test cases does not exceed 2⋅105
.
Output
For each test case, output in a separate line:
n
integers — a super-permutation of length n
, if it exists.
−1
, otherwise.
If there are several suitable permutations, output any of them.
Example
inputCopy
4
1
2
3
6
outputCopy
1
2 1
-1
6 5 2 3 4 1
一道很有意思的找规律题
#include <bits/stdc++.h>
using namespace std;
int main() {
int q;
cin >> q;
while (q--) {
int n;
cin >> n;
if (n == 1) {
cout << 1 << endl;
continue;
}
if (n % 2) {
cout << -1 << endl;
} else {
for (int i = 0; i < n; ++i) {
if (i % 2) {
cout << i << " ";
} else {
cout << n - i << " ";
}
}
cout << "\n";
}
}
return 0;
}