Top.Mail.Ru
Ответы

Математика; программирование; комбинаторика]

Наш геймдизайнер описал квест с непростой математической задачей. Твоя задача — протестировать условие квеста.

Квест «Взлом панели».

Робот подал сигнал тревоги! Миша молнией метнулся к монитору и включил камеру робота. Он увидел, что робот наткнулся на закрытую дверь. Справа от двери на стене была панель с 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:

12345678910111213141516
 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) 

Этот код генерирует все возможные комбинации из списка символов заданной длины и выводит количество комбинаций.