#include<iostream>
#include<queue>
#include<algorithm>
using namespace std;
int main(){
int n;
cin>>n;
while(n--){
int k;
cin>>k;
if(k%2==1){
for(int i=1;i<=k;i++) cout<<i<<" ";
cout<<endl;
}
else if(k==2) cout<<"-1"<<endl;
else {
cout<<"4 2 3 1 ";
for(int i=5;i<=k;i++) cout<<i<<" ";
cout<<endl;
}
}
return 0;
}
这是AC代码。
下面我将阐述我的思路,我们不妨想想一行连续上升的数列 如 {1 2 3 4)中是不是两两互质,即最大公因数为1,如果当出现
个数为奇数,如{1 2 3)就会发现gcd为偶数;
而对于个数为偶数我进行了特殊处理
比如{1 2 3 4}为3变成{4 2 3 1}为4
而后多的偶数序列仍然保持上升序列
如{4 2 3 1 5 6 7 8 9 10} 读者不妨试试看,其实前4个变成{4 2 3 1}相当于给原gcd+1;
好的难的部分理解完
下面是对部分情况的特判
即 n=2 和n=1.

京公网安备 11010502036488号