Advertisement
Nik_Perepelov

13 Ксюше

Dec 15th, 2021
937
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.10 KB | None | 0 0
  1. // 1
  2. #include <iostream>
  3. #include <cmath>
  4. #include <vector>
  5.  
  6. using namespace std;
  7.  
  8.  
  9. int factorial(int n)
  10. {
  11.     return (n == 1 || n == 0) ? 1 : factorial(n - 1) * n;
  12. }
  13.  
  14. int main() {
  15.     int n, k;
  16.     cin >> n >> k;
  17.     vector<bool> used(n + 1);
  18.     vector<int> answer(n);
  19.  
  20.     for (int i = 0; i < n; i++) {
  21.         int c = (k - 1) / factorial(n - i - 1) + 1;
  22.         int j = 1;
  23.         int p = 0;
  24.  
  25.         for (; j <= n; j++) {
  26.             if (!used[j]) {
  27.                 p++;
  28.             }
  29.             if (c == p) {
  30.                 break;
  31.             }
  32.         }
  33.         k = (k - 1) % factorial(n - i - 1) + 1;
  34.         used[j] = true;
  35.         answer[i] = j;
  36.     }
  37.     for (int i = 0; i < n; i++) {
  38.         cout << answer[i] << " ";
  39.     }
  40. }
  41.  
  42. // 2
  43.  
  44. #include <iostream>
  45. #include <vector>
  46.  
  47. using namespace std;
  48.  
  49.  
  50. vector<int> answer;
  51. int n, k;
  52. int cnt = 0;
  53.  
  54.  
  55. void comb(int i = 0) {
  56.     if (k - cnt == 0) {
  57.         for (int j = 0; j < k; j++) {
  58.             cout << answer[j] << " ";
  59.         }
  60.         cout << endl;
  61.         return;
  62.     }
  63.     for (; i <= n - k + cnt; i++) {
  64.         answer.push_back(i + 1);
  65.         cnt++;
  66.         comb(i + 1);
  67.         cnt--;
  68.         answer.pop_back();
  69.     }
  70. }
  71.  
  72. int main() {
  73.     cin >> n >> k;
  74.  
  75.     comb();
  76.  
  77.     return 0;
  78. }
  79.  
  80. // 3
  81.  
  82. #include <iostream>
  83. #include <vector>
  84. using namespace std;
  85.  
  86. int foo(int n, int m) {
  87.     int answer = 1;
  88.     for (int i = n; i > n - m; i--) {
  89.         answer = answer * i;
  90.     }
  91.     return answer;
  92. }
  93.  
  94.  
  95. int main() {
  96.     int n, k, m, p = 0;
  97.     cin >> n >> k >> m;
  98.     vector<int> ans(k);
  99.     vector<bool> used(n);
  100.  
  101.     m--;
  102.     int a = n - 1, b = k - 1;
  103.     for (int i = 0; i < k; i++) {
  104.         p = 0;
  105.         int tmp = foo(a, b);
  106.         int c = m / tmp;
  107.         m -= c * tmp;
  108.         c++;
  109.         while (c != 0) {
  110.             if (!used[p]) {
  111.                 c--;
  112.             }
  113.             p++;
  114.         }
  115.         ans[i] = p;
  116.         used[p - 1] = true;
  117.         a--;
  118.         b--;
  119.     }
  120.  
  121.     for (int j = 0; j < k; j++) {
  122.         cout << ans[j] << " ";
  123.     }
  124.     return 0;
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement