ГДЗ по информатике, 11 класс, Босова, номер p131.12: функции
Информатика — Босова Л.Л., Босова А.Ю.
Роман Жуков, методист по информатике Шпаргача обновлено 8 сентября 2026
Условие
Составить программу для вычисления биномиального коэффициента C_n^k по формуле n! / ((n-k)! * k!), используя подпрограмму.
Номер как в учебнике. Условие — полный пересказ редакции: те же пункты, числа и факты, не цитата из книги.
Пошаговое решение
План решения:
- Для вычисления биномиального коэффициента Ckn нам потребуется функция для нахождения факториала числа. Факториал n! — это произведение всех натуральных чисел от 1 до n.
- Создадим подпрограмму (функцию)
factorial, которая принимает целое число и возвращает его факториал. - В основной программе запросим у пользователя значения n и k, проверим корректность ввода (0≤k≤n), затем вычислим результат по формуле n!/(n-k)!·k! с использованием созданной функции.
Реализация на языке Python:
- Определяем функцию
factorial(n). Внутри неё используем цикл или рекурсию. Для школьного курса удобнее итеративный подход (цикл). - В теле функции инициализируем переменную
result = 1. - Запускаем цикл от 1 до n включительно, умножая
resultна текущее значение счетчика. - Возвращаем полученное значение.
- В основной части программы запрашиваем ввод n и k.
- Вычисляем числитель как
factorial(n), а знаменатель какfactorial(n - k) * factorial(k). - Делим числитель на знаменатель и выводим результат.
Код программы:
\ndef factorial(num):
result = 1
for i in range(1, num + 1):
result *= i
return result
\ntry:
n = int(input("Введите n: "))
k = int(input("Введите k: "))
if k < 0 or k > n:
print("Ошибка: должно выполняться условие 0 <= k <= n")
else:
numerator = factorial(n)
denominator = factorial(n - k) * factorial(k)
binomial_coefficient = numerator // denominator # Целочисленное деление, так как результат всегда целый
print(f"C({n}, {k}) = {binomial_coefficient}")\nexcept ValueError:
print("Введите целые числа.")Проверка:
Рассмотрим пример: n=5,k=2. По формуле комбинаторики C25=5!/3!·2!=120/6·2=120/12=10.
Работа программы:
1. Вызов factorial(5) вернет 120.
2. Вызов factorial(3) вернет 6.
3. Вызов factorial(2) вернет 2.
4. Знаменатель: 6·2=12.
5. Результат: 120/12=10. Программа выдаст правильный ответ.
def factorial(n): ... C(n, k) = factorial(n)//(factorial(n-k)*factorial(k))
В условии требуется использовать подпрограмму. В решении реализована функция factorial. Важно отметить, что в Python для больших чисел лучше использовать math.comb, но задача учебная, поэтому реализуем алгоритм вручную через факториалы, как указано в формулировке.
Как решение?
Двойная оценка: понятность и подробность. Можно выбрать одно или оба.
У вас другое условие?
Загрузите фото — учтём ваши числа и редакцию.
Частые вопросы
Это точный номер p131.12 из моего учебника?
Номер совпадает с учебником «Информатика», Босова Л.Л., Босова А.Ю.. Формулировка — пересказ редакции, не дословная цитата. Если в вашей редакции другие числа — загрузите фото.
Какой ответ в задании p131.12?
Краткий ответ: def factorial(n): ... C(n,k) = factorial(n)//(factorial(n-k)*factorial(k)).
Как пользоваться этим разбором?
Сначала прочитайте условие и чертёж, затем шаги решения по порядку и сверьте свой ход с кратким ответом внизу.
Какой учебник имеется в виду?
«Информатика», Босова Л.Л., Босова А.Ю.. Проверьте часть, год и автора на обложке. Тема в учебнике: Глава 2. Алгоритмы и программирование.
Можно ли списать ответ без решения?
Лучше сначала решить самостоятельно, а разбор использовать для проверки хода и поиска ошибки.