Ctrl K

Шанс не перебрать

Средняя
В настольной игре у игрока сначала 0 очков. Пока у него меньше stop_at очков, он тянет из мешка фишку и прибавляет её номинал к счёту. Номинал каждой фишки — случайное целое число от 1 до max_step, все значения равновероятны, вытягивания независимы друг от друга. Как только счёт достигает stop_at или больше, игрок останавливается. Верните вероятность того, что итоговый счёт окажется не больше cap. Ответ принимается с точностью до 10⁻⁵.
Пример 1
cap=4, stop_at=1, max_step=8 → 0.5

Игрок тянет ровно одну фишку: из 8 равновероятных значений подходят 1, 2, 3, 4 — шанс 4/8 = 0.5.

Пример 2
cap=3, stop_at=2, max_step=2 → 1.0

Первая фишка 2 (шанс 1/2) — игра окончена на 2. Первая 1, затем 1 или 2 — итог 2 или 3. Счёт никогда не превышает 3, шанс 1.0.

Пример 3
cap=2, stop_at=2, max_step=2 → 0.75

Плохой исход один: сначала 1, затем 2 — итог 3. Его шанс 1/2 · 1/2 = 0.25, поэтому ответ 0.75.

Ограничения
  • 0 ≤ stop_at ≤ cap ≤ 10⁴
  • 1 ≤ max_step ≤ 10⁴
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКакая кастрюля опустеет первой СредняяПоследний зритель на своём месте СредняяШанс на нужное число орлов СредняяЧестный раздел цветных бусин СложнаяСколько маршрутов по сетке Средняя
загружаем Python…
Вход
cap=4, stop_at=1, max_step=8
Ожидается
0.5

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 66 тестов на сервере, включая скрытые.