链接: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;
-
- }