Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // 1
- #include <iostream>
- #include <cmath>
- #include <vector>
- using namespace std;
- int factorial(int n)
- {
- return (n == 1 || n == 0) ? 1 : factorial(n - 1) * n;
- }
- int main() {
- int n, k;
- cin >> n >> k;
- vector<bool> used(n + 1);
- vector<int> answer(n);
- for (int i = 0; i < n; i++) {
- int c = (k - 1) / factorial(n - i - 1) + 1;
- int j = 1;
- int p = 0;
- for (; j <= n; j++) {
- if (!used[j]) {
- p++;
- }
- if (c == p) {
- break;
- }
- }
- k = (k - 1) % factorial(n - i - 1) + 1;
- used[j] = true;
- answer[i] = j;
- }
- for (int i = 0; i < n; i++) {
- cout << answer[i] << " ";
- }
- }
- // 2
- #include <iostream>
- #include <vector>
- using namespace std;
- vector<int> answer;
- int n, k;
- int cnt = 0;
- void comb(int i = 0) {
- if (k - cnt == 0) {
- for (int j = 0; j < k; j++) {
- cout << answer[j] << " ";
- }
- cout << endl;
- return;
- }
- for (; i <= n - k + cnt; i++) {
- answer.push_back(i + 1);
- cnt++;
- comb(i + 1);
- cnt--;
- answer.pop_back();
- }
- }
- int main() {
- cin >> n >> k;
- comb();
- return 0;
- }
- // 3
- #include <iostream>
- #include <vector>
- using namespace std;
- int foo(int n, int m) {
- int answer = 1;
- for (int i = n; i > n - m; i--) {
- answer = answer * i;
- }
- return answer;
- }
- int main() {
- int n, k, m, p = 0;
- cin >> n >> k >> m;
- vector<int> ans(k);
- vector<bool> used(n);
- m--;
- int a = n - 1, b = k - 1;
- for (int i = 0; i < k; i++) {
- p = 0;
- int tmp = foo(a, b);
- int c = m / tmp;
- m -= c * tmp;
- c++;
- while (c != 0) {
- if (!used[p]) {
- c--;
- }
- p++;
- }
- ans[i] = p;
- used[p - 1] = true;
- a--;
- b--;
- }
- for (int j = 0; j < k; j++) {
- cout << ans[j] << " ";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement