思路
首先我们知道
g
c
d
(
i
,
i
+
1
)
=
1
(
1
≤
i
)
gcd(i,i+1)=1(1\leq i)
gcd(i,i+1)=1(1≤i), 恒成立。 那么题目要求要有k个共素,例如1,2,3,4,5 ,k=3,我们直接把1放在位置k上,然后2,3前移,即可2,3,1,4,5
注意
g
c
d
(
1
,
i
)
=
1
gcd(1,i)=1
gcd(1,i)=1,所以
k
k
k至少为1
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,k;
cin>>n>>k;
int x=2;
if(k==0)
{
puts("-1");
return 0;
}
for(int i=1; i<=n; i++)
{
if(i==k) printf("1 ");
else printf("%d ",x++);
}
return 0;
}