题意 :
- 求构造一个n的排列,满足其中恰好k个元素与下标互质,如果不能则输出-1
思路 :
- 让前k个与下标偏移1,后面的都与下标相同即可
- 当且仅当k=0时,无解,输出-1
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
#include <unordered_set>
#include <math.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> PII;
#define endl '\n'
#define fi first
#define se second
#define push_back
#define rep(i, l, r) for (ll i = l; i <= r; i ++ )
void solve()
{
int n, k; cin >> n >> k;
if (k == 0) return cout << -1, void();
if (n == 1) return cout << 1, void();
cout << k << ' ';
for (int i = 2; i <= k; i ++ )
{
cout << i - 1;
if (i != k) cout << ' ';
}
if (k == n) return ;
for (int i = k + 1; i <= n; i ++ ) cout << ' ' << i;
}
int main()
{
cin.tie(nullptr) -> sync_with_stdio(false);
// int _;
// cin >> _;
// while (_ -- )
solve();
return 0;
}