题解:CF361B Levko and Permutation
前置芝士——最大公约数 - OI Wiki
题目其实很简单,我们可以知道一些最大公约数的性质:
有一个数 ,则:
那么其实只要将前 个数都往后移一位,第 位用 即可,后面的全是原数。
注意特判 和 的情况, 是因为第一个需要是 , 是因为只有一个的时候一定是 个。
CFAC 记录:

AC code:
#include<bits/stdc++.h>
#define int long long
#define endl "\n"
using namespace std;
const int maxn=1e6+5;
int n,k;
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin>>n>>k;
if(k==n||n==1&&k!=0){
cout<<"-1"<<endl;
return 0;
}
for(int i=1;i<n-k;i++){
cout<<i+1<<' ';
}
cout<<1<<' ';
for(int i=n-k+1;i<=n;i++){
cout<<i<<' ';
}
return 0;
}
本人(KK_SpongeBob)蒟蒻,写不出好文章,但转载请注明原文链接:https://www.cnblogs.com/OIer-QAQ/p/18575245

浙公网安备 33010602011771号