题目链接:`[传送门]
题意是给个n,写出一个包含1-n的序列a,其中下标i和a[i]的gcd值不为1的个数有k个。
写法就是后k个值是它本身(gcd(i,i)=i) 前面的与i错开一位去输出
代码如下:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define N 10010
int a[N];
int gcd(int x,int y){
return (y>0)?gcd(y,x%y):x;
}
int main(){
int i,j,n,m,k;
while(scanf("%d %d",&n,&k)!=EOF){
if(k==n){
cout<<"-1"<<endl;
continue;
};
for(i=1;i<=n-k;i++){
if(i==1) cout<<n-k<<" ";
else cout<<i-1<<" ";
}
for(i=n-k+1;i<=n;i++)
cout<<i<<" ";
cout<<endl;
}
return 0;
}