Давайте разберемся с задачей по шагам.
Задача:
Мартышка карабкается по дереву: за день она поднимается на 'a' метров, а за ночь опускается на 'b' метров. Высота дерева — 'h'. Нужно найти день, когда мартышка достигнет вершины или превысит ее.
Анализ ситуации:
- В течение первого дня мартышка поднимается на 'a' метров.
- Каждую ночь она спускается на 'b' метров, кроме, когда достигнет вершины.
- Важное ограничение: один раз достигнув вершины, более спусков не происходит.
Решение логики:
В конце каждого полного дня, кроме последнего, мартышка оказывается на уровне:
\[ \text{день} \times (a - b) \] но так как она за день поднимается на 'a', а за ночь опускается на 'b' (кроме последнего дня, когда она достигнет вершины),
на практике, за один день она поднимается на 'a' метров, а за ночь — теряет 'b'.Общий случай:
- Если высота 'h' меньше или равна 'a', то уже в первый день она доберется до вершины.
- Если 'h' больше 'a', нужно понять, через сколько дней она достигнет или превысит 'h'.
Формула и расчет:
- В предпоследние дни, мартышка достигает высоты, которая меньше 'h' на сумму
(a - b)метров за день, и только в последний день она достигнет вершины, когда поднимется на 'a' метров.
- В предпоследние дни, мартышка достигает высоты, которая меньше 'h' на сумму
Итоговая формула:
Если 'h' ≤ 'a', то ответ — 1 день.
Иначе нужно найти минимальное число дней 'n', при котором:
\[ (n - 1) \times (a - b) + a \geq h \]
то есть:
\[ n - 1 \geq \frac{h - a}{a - b} \]
\[ n \geq \frac{h - a}{a - b} + 1 \]
И тогда:
\[ n = \left\lceil \frac{h - a}{a - b} \right\rceil + 1 \]
— где \(\lceil x \rceil\) — округление вверх.
Реализация:
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))
# Общий ответ — days_needed + 1
print(days_needed + 1)
Объяснение:
- Если высота 'h' меньше или равна 'a', то мартышка достигает вершины за первый день.
- Если больше, то остаемся с формулой: сколько полных дней потребуется, чтобы достигнуть или превысить 'h' с учетом ночных опусканий.
Эта программа даст точный ответ на задачу для любых допустимых значений 'a', 'b', и 'h'.