Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- int main()
- {
- int n; long long k;
- cin >> n >> k;
- k--;
- vector <long long> f(20);
- // для оптимизации :D
- f[0] = 1; f[1] = 1; f[2] = 2; f[3] = 6; f[4] = 24; f[5] = 120; f[6] = 720; f[7] = 5040; f[8] = 40320; f[9] = 362880; f[10] = 3628800; f[11] = 39916800;
- f[12] = 479001600; f[13] = 6227020800; f[14] = 87178291200; f[15] = 1307674368000; f[16] = 20922789888000; f[17] = 355687428096000;
- f[18] = 6402373705728000; f[19] = 121645100408832000;
- //
- vector <int> a(n);
- for (int i = 0; i < n; i++)
- a[i] = i + 1;
- long long j;
- for (int i = 0, n1 = n; i < n; i++)
- {
- j = k / f[n1 - 1];
- cout << a[j] << " ";
- for (int h = j + 1; h < a.size(); h++)
- swap(a[h - 1],a[h]);
- a.pop_back();
- k = k % f[n1 - 1];
- n1--;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement