Bang! Bang!题解
KCo-primePermutation
https://ac.nowcoder.com/acm/problem/216011
本题最重要的点在于
因为了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; }