2020 icpc 南京 K Co-prime Permutation 思维题
admin
2024-02-20 18:18:26

链接:https://ac.nowcoder.com/acm/contest/10272/K?&headNav=acm

题目描述

Kotori is very good at math (really?) and she loves playing with permutations and primes.

One day, she thinks of a special kind of permutation named k co-prime permutation. A permutation p1,p2,⋯ ,pn​ of n is called a k co-prime permutation of n if there exists exactly k integers i such that 1≤i≤n and gcd(pi,i)=1, where gcd(x,y) indicates the greatest common divisor of x and y.

Given nnn and k, please help Kotori construct a k co-prime permutation of n or just report that there is no such permutation.

Recall that a permutation of nnn is a sequence of length nnn containing all integers from 1 to n.

输入描述:

There is only one test case in each test file.The first and only line contains two integers n and k (1≤n≤10^6, 0≤k≤n).

输出描述:

Output one line containing nnn integers p1,p2,⋯ ,pn separated by one space, indicating the permutation satisfying the given constraints. If no such permutation exists output "-1" (without quotes) instead. If there are multiple valid answers you can print any of them.Please, DO NOT output extra spaces at the end of each line, otherwise your answer may be considered incorrect!

示例1

输入

5 3

输出

1 4 5 2 3

示例2

输入

1 0

输出

-1

 题解:思维题 我真是菜 

让前k个数与下标互质就行了 然后后面的数与下标相同 (两个相同的数是不互质的)

#include 
#include 
#include 
#include 
#include 
#include using namespace std ;
const int N = 1e6+10;
int n  ;
int k ;
int a[N] ;int main()
{cin >> n >> k ;if(k==0) {cout << "-1" ; return 0;}for(int i = 2 ; i<= k ; i++) a[i-1]=i;a[k]=1;for(int i = k+1 ; i<=n ; i++) a[i]=i;for(int i = 1 ; i <= n ; i++) {cout << a[i] ;if( i!= n ) cout << " " ;}return 0;}

相关内容

热门资讯

米拉日巴佛阁位于甘南合作市郊 米拉日巴佛阁位于甘南合作市郊,距离市中心约3公里,是一座红色的藏式高层建筑。佛阁的高层宗教建筑在藏区...
原创 5... 要知道,5月27日赵子豪在上海迪士尼的照片和短文在社交平台上被不少人热聊,他背着树懒卡通包,还配了句...
沉浸式露营体验!长春这家河畔休... 露营,作为一种亲近自然、放松身心的休闲方式,越来越受到人们的喜爱。然而,传统的露营需要准备大量的装备...
杭州龙井的茶,飘了旧香 杭州龙井寻香记 一、风里飘来的旧香 暮春的杭州总裹着一层湿润的绿,我原本只是趁着清明后的假期来散心,...