K Co-prime Permutation
输入样例1
5 3
输出样例1
1 4 5 2 3
输入样例2
1 0
输出样例2
-1
题解
题目的意思是给一个排列,使得这一个排列的下标与的数字互质的总个数为k个。
注意有一种构造方法:
两个相邻的数字一定是互质的。
也要注意:当k为0的时候是不可能的(因为1与任何数字的最小公约数是1)。
#include <bits/stdc++.h>
#include <cstdio>
using namespace std;
int main()
{
int n, k;
cin >> n >> k;
if(k == 0){
puts("-1");
return 0;
}
for(int i = 2; i <= k; i++)
{
printf("%d ", i);
}
printf("%d ", 1);
for(int i = k+1; i <= n; i++)
printf("%d ", i);
puts("");
return 0;
}