Все темы
138

Считаем, сколькими способами выбрать

Tier 1Закрыто

Где применяется

1. Задача

Шаг 136 быстро возводил число в большую степень, а шаг 137 держал числа маленькими с помощью модуля. Теперь ответ сам по себе это количество: дано n предметов, сколькими разными способами можно выбрать из них r, если порядок не важен?

Это количество записывают как C(n, r) и читают «из n по r» (число сочетаний). Выбрать 2 друзей из 5: C(5, 2) = 10. Сдать 5 карт из колоды в 52: C(52, 5) = 2 598 960. Формула из учебника: n! / (r! · (n - r)!), где n! (читается «эн факториал») это произведение 1 · 2 · 3 · ... · n.

В этой формуле есть ловушка. n! растёт очень быстро: 13! уже больше 6 миллиардов, 21! не помещается даже в 64-битное целое. У 52! уже 68 цифр. Если посчитать три факториала по отдельности, переполнение наступит задолго до того, как деление вернёт ответ к небольшому числу вроде 2 598 960.

Этот шаг из платной части

Бесплатные шаги в начале курса (их 33) открыты всем: урок, задача и тесты. Этот шаг открывается с полным доступом. Начни с бесплатного аккаунта и бесплатных шагов.

Завести бесплатный аккаунтПосмотреть, что входит

На LeetCode

Задачи на подсчёт, где нужно число сочетаний из n по r, например пути в сетке, отсортированные строки или порядки, которые сохраняют форму. Треугольник Паскаля складывает два числа на клетку, огромный факториал не появляется, и всё работает по модулю 10^9 + 7.

Мы используем необходимые куки для работы сайта (вход и язык). Если ты согласишься, мы также загрузим Google Analytics, чтобы видеть, какие страницы читают, и Google reCAPTCHA для защиты форм обратной связи и сообщений об ошибке от спама. Политика конфиденциальности