Основные формулы комбинаторики: размещения, перестановки, сочетания
from math import factorial
# размещение с повторениями
def arrangement_with_repetition(n, k):
return n ** k
# размещение без повторений
def arrangement_without_repetition(n, k):
return factorial(n) // factorial(n - k)
# перестановки
def permutation(n):
return factorial(n)
# сочетания с повторениями
def combination_with_repetition(n, k):
return factorial(n + k - 1) // (factorial(k) * factorial(n - 1))
# сочетания без повторений
def combination_without_repetition(n, k):
return factorial(n) // (factorial(k) * factorial(n - k))
#include <bits/stdc++.h>
using namespace std;
// Функция для вычисления факториала
long long factorial(int n) {
long long result = 1;
for (int i = 2; i <= n; ++i) {
result *= i;
}
return result;
}
// размещение с повторениями
long long arrangement_with_repetition(int n, int k) {
return (long long)pow(n, k);
}
// размещение без повторений
long long arrangement_without_repetition(int n, int k) {
return factorial(n) / factorial(n - k);
}
// перестановки
long long permutation(int n) {
return factorial(n);
}
// сочетания с повторениями
long long combination_with_repetition(int n, int k) {
return factorial(n + k - 1) / (factorial(k) * factorial(n - 1));
}
// сочетания без повторений
long long combination_without_repetition(int n, int k) {
return factorial(n) / (factorial(k) * factorial(n - k));
}
Количество способов выбрать k элементов из n с учётом порядка, элементы могут повторяться.
Количество способов выбрать k элементов из n с учётом порядка, элементы не повторяются.
Количество способов переставить n элементов местами.
Количество способов выбрать k элементов из n без учёта порядка, элементы могут повторяться.
Количество способов выбрать k элементов из n без учёта порядка, элементы не повторяются.