Давайте подробно разберём задачу и найдём решение.
Условия задачи:
- Мартышка карабкается по дереву высотой h метров.
- Каждый день она поднимается на a метров.
- Каждую ночь опускается на b метров.
- При этом, утверждается, что a > b, то есть за день она в итоге поднимается выше, чем спускается ночью.
Что нужно найти?
— Номер дня, когда мартышка впервые достигнет вершины дерева или превысит её.
Анализ задачи
За один полный цикл (один день + одна ночь), мартышка поднимается на (a - b) метров, если она не достигла вершины раньше.
Но важный момент: если она достигнет вершины или превысит её во время подъёма, она не будет спускаться.
Подход к решению
- За каждый день, кроме, возможно, последнего, она "чисто" поднимается на
(a - b) метров.
- В последний день, если мартышка сможет достичь вершины на подъёме, то она завершает свой путь и не перемещается дальше.
Пошаговое решение
Обнаружим, за сколько дней она приблизится к вершине, чтобы на следующий день уже достигнуть или превысить h.
Что если учитывать, что на последнем подъёме она может достичь вершины до того, как опустится за ночь?
— Тогда она достигнет вершины, когда её подъём на текущий день приведёт её на или выше уровня h.
Формула
- Если на тот день, когда мартышка достигнет вершины, это произойдёт, значит:
[ \text{положение в начале дня} + a \geq h ]
Где "положение в начале дня" — это высота, достигнутая на конец предыдущего дня.
В конце предыдущего дня: после (k-1) полных дней, высота составляет:
[ (k - 1) \times (a - b) ]
(предполагаем, что не достигли вершины за предыдущие дни).
- Тогда на следующем, k-м, день, мартышка поднимается на a метров:
[ (k - 1) \times (a - b) + a \geq h ]
- Выразим из этого выражения:
[ (k - 1) \times (a - b) + a \geq h ]
[ (k - 1) \times (a - b) \geq h - a ]
[ k - 1 \geq \frac{h - a}{a - b} ]
- ( k ) — целое число, значит, берём округление вверх (ceil):
[ k = \left\lceil \frac{h - a}{a - b} \right\rceil + 1 ]
Обратите внимание:
— Если ( h \leq a ), то мартышка достигнет вершины уже в первый день, и ответ — 1.
Итоговая формула
[
\text{Ответ} =
\begin{cases}
1, & \text{если } h \leq a \
\left\lceil \frac{h - a}{a - b} \right\rceil + 1, & \text{иначе}
\end{cases}
]
Реализация
Теперь приведем пример кода, который считает день, когда мартышка доберется до вершины, исходя из входных данных:
import math
a = int(input().strip())
b = int(input().strip())
h = int(input().strip())
if h <= a:
# Мартышка достигает вершины в первый день
print(1)
else:
# Расчёт числа дней по формуле
days_needed = math.ceil((h - a) / (a - b))
print(days_needed + 1)
Если есть вопросы или нужно более подробно объяснить — скажите!