本题最重要的点在于
因为了n>=1的缘故,所以第一个数必然是互质的,则k=0和k>n的情况必然不存在
此时考虑n为奇数时,则1的位置可置1,2,3互换4,5互换直至k == 0为止
偶数时从1开始互换即可
代码如下
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+10;
int a[N];
int main(){
int n,k;
cin>>n>>k;
for(int i=1;i<=n;i++) a[i] = i;
if(k == 0 || k > n) puts("-1");
else{
if(k&1){
k--;
for(int i=2;k!=0;i+=2){
swap(a[i],a[i+1]);
k-=2;
}
}
else{
for(int i=1;k!=0;i+=2){
swap(a[i],a[i+1]);
k-=2;
}
}
for(int i=1;i<=n;i++){
i!=1?printf(" %d",a[i]):printf("%d",a[i]);
}
}
return 0;
}
京公网安备 11010502036488号