Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3297247
А
Аноним
09 июля 2025 16:44 · публичный вопрос
А
Аноним

Мартышка карабкается по банановому дереву, каждый день поднимаясь на расстояние a метров, но каждую ночь опускаясь на расстояние b метров. Если высота дерева составляет h метров,…

Запрос пользователя

Мартышка карабкается по банановому дереву, каждый день поднимаясь на расстояние a метров, но каждую ночь опускаясь на расстояние b метров. Если высота дерева составляет h метров, то на какой день мартышка доберется до вершины, на которой растут бананы? Формат входных данных Даны три натуральных числа a, b, c, по одному числу на строке. Числа не превосходят 10 ** 9. Гарантируется, что a > b. Формат результата Выведите одно натуральное число — ответ на задачу.

Ответ нейросети
09 июля 2025 16:44

Давайте подробно разберём задачу и найдём решение.

Условия задачи:

  • Мартышка карабкается по дереву высотой h метров.
  • Каждый день она поднимается на a метров.
  • Каждую ночь опускается на b метров.
  • При этом, утверждается, что a > b, то есть за день она в итоге поднимается выше, чем спускается ночью.

Что нужно найти?
— Номер дня, когда мартышка впервые достигнет вершины дерева или превысит её.


Анализ задачи

За один полный цикл (один день + одна ночь), мартышка поднимается на (a - b) метров, если она не достигла вершины раньше.

Но важный момент: если она достигнет вершины или превысит её во время подъёма, она не будет спускаться.


Подход к решению

  1. За каждый день, кроме, возможно, последнего, она "чисто" поднимается на (a - b) метров.
  2. В последний день, если мартышка сможет достичь вершины на подъёме, то она завершает свой путь и не перемещается дальше.

Пошаговое решение

  1. Обнаружим, за сколько дней она приблизится к вершине, чтобы на следующий день уже достигнуть или превысить h.

  2. Что если учитывать, что на последнем подъёме она может достичь вершины до того, как опустится за ночь?
    — Тогда она достигнет вершины, когда её подъём на текущий день приведёт её на или выше уровня 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:

\[ (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)

Если есть вопросы или нужно более подробно объяснить — скажите!