题解:CF361B Levko and Permutation

前置芝士——最大公约数 - OI Wiki

题目其实很简单,我们可以知道一些最大公约数的性质:

有一个数 xx,则:

gcd(x,x1)=1gcd(1,x)=1\gcd(x,x-1)=1 \\ \gcd(1,x)=1

那么其实只要将前 kk 个数都往后移一位,第 kk 位用 11 即可,后面的全是原数。

注意特判 k=nk=nn=1,k0n=1,k\ne0 的情况,k=nk=n 是因为第一个需要是 11n=1,k0n=1,k\ne0 是因为只有一个的时候一定是 00 个。

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;
}
posted @   KK_SpongeBob  阅读(3)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 百万级群聊的设计实践
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
点击右上角即可分享
微信分享提示