Advertisement
Guest User

Untitled

a guest
Nov 29th, 2014
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.83 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.     int n; long long k;
  9.     cin >> n >> k;
  10.     k--;
  11.     vector <long long> f(20);
  12.     // для оптимизации :D
  13.     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;
  14.     f[12] = 479001600; f[13] = 6227020800; f[14] = 87178291200; f[15] = 1307674368000; f[16] = 20922789888000; f[17] = 355687428096000;
  15.     f[18] = 6402373705728000; f[19] = 121645100408832000;
  16.     //
  17.     vector <int> a(n);
  18.     for (int i = 0; i < n; i++)
  19.         a[i] = i + 1;
  20.     long long j;
  21.     for (int i = 0, n1 = n; i < n; i++)
  22.     {
  23.         j = k / f[n1 - 1];
  24.         cout << a[j] << " ";
  25.         for (int h = j + 1; h < a.size(); h++)
  26.             swap(a[h - 1],a[h]);
  27.         a.pop_back();
  28.         k = k % f[n1 - 1];
  29.         n1--;
  30.     }
  31.     return 0;
  32. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement