目录
A-Problem - A - Codeforces
题意:初始状态:i-th猫在第i个位置。问所有的猫移动多少距离(最短距离)能使每只猫都不在原来的位置上
思路:奇数只猫,可分成三只+偶数对只,偶数只猫可相互交换位置,三只按照题意移动四次即可
偶数只猫,直接交换位置即可。
代码:
#include <iostream>
#include <map>
#include <algorithm>
#include <queue>
#include <set>
#include <cstring>
#include <cmath>
using namespace std;
typedef long long ll;
const ll p=1e9+7;
void getS(){
freopen(R"(C:\Users\Vicky\Desktop\ABC\in.txt)","r",stdin);
}
int main(){
// getS();
int t;
scanf("%d",&t);
while(t--){
int n;
scanf("%d",&n);
if(n==2)printf("2 1\n");
else if(n==3){
printf("3 1 2\n");
} else{
if(n%2==1){
printf("3 1 2 ");
for(int i=4;i<=n-1;i+=2){
printf("%d %d ",i+1,i);
}printf("\n");
} else{
for(int i=1;i<=n;i+=2){
printf("%d %d ",i+1,i);
}printf("\n");
}
}
}
}