Математика; программирование; комбинаторика]
Наш геймдизайнер описал квест с непростой математической задачей. Твоя задача — протестировать условие квеста.
Квест «Взлом панели».
Робот подал сигнал тревоги! Миша молнией метнулся к монитору и включил камеру робота. Он увидел, что робот наткнулся на закрытую дверь. Справа от двери на стене была панель с M символами. Миша потер руки и дал команду роботу нажать на панель, набирать любые символы, пока панель не запищит. Так он хочет узнать длину пароля. Проходят мгновения, робот набирает символы в произвольном порядке, Миша считает количество набранных символов, и вдруг панель издала писк. Миша насчитал N символов, которые были набраны роботом. Он понял, что надо взломать панель, поэтому написал программу для расчета количества комбинаций.
m = (M)
n = (N)
a = 1
b = 1
c = 1
for i = 1, m do
a = a * i
end
for j = 1, n do
b = b * j
end
for l = 1, (m - n) do
c = c * l
end
s = (a / (b * c))
print(s)
Введите численный ответ
Найдите количество комбинаций, если известно, что (M) = 19.0 количество символов, (N) = 6.0 длина пароля
1024
Ну в твоей программе s=m!/(n!(m-n)!)
Бери калькулятор и считай.
А вообще-то должно быть s=m^n
Пусть m=2, n=10. Очевидно, что в этом случае s=0. Но количество комбинацй, разумеется, будет 1024.
Для решения задачи нужно ввести числа M и N в формулу, представленную в квесте, и вычислить количество комбинаций. По формуле, количество комбинаций равно a / (b * c), где a = M!, b = N!, c = (M - N)!, а знак "!" обозначает факториал.
В данном случае, M = 19, N = 6. Подставляя значения в формулу, получаем:
a = 19! = 121645100408832000
b = 6! = 720
c = 13! = 6227020800
s = a / (b * c) = 38760
Ответ: 38760.
код на Python:
from itertools import combinations
# список символов
symbols = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's']
# длина пароля
password_length = 6
# генерация всех возможных комбинаций
combs = list(combinations(symbols, password_length))
# количество комбинаций
num_combs = len(combs)
# вывод результата
print(num_combs)
Этот код генерирует все возможные комбинации из списка символов заданной длины и выводит количество комбинаций.