"""Утилиты для работы с бросанием монет""" from typing import Dict, List import math class CoinCombinations: """Предрасчет комбинаций для бросания монет""" @staticmethod def binomial_coefficient(n: int, k: int) -> int: """ Вычисление биномиального коэффициента C(n,k) Аргументы: n: общее количество бросков k: количество орлов Возвращает: int: количество комбинаций """ if k > n or k < 0: return 0 return math.comb(n, k) @staticmethod def get_coin_combinations(max_flips: int = 5) -> Dict[int, Dict[int, int]]: """ Получение всех комбинаций для бросания монет Аргументы: max_flips: максимальное количество бросков Возвращает: словарь {количество_бросков: {орлов: количество_комбинаций}} """ result = {} for num_flips in range(1, max_flips + 1): combinations = {} for heads in range(num_flips + 1): combinations[heads] = CoinCombinations.binomial_coefficient(num_flips, heads) result[num_flips] = combinations return result