Вопрос задан 18.09.2026 в 10:23. Предмет Информатика. Спрашивает Ivanov Server-X.

Задача «Улитка».
Условие:
Улитка ползёт по вертикальному шесту высотой h метров, поднимаясь за день на a метров, а за ночь спускаясь на b метров. На какой день улитка доползёт до вершины шеста?
С выводом формулы.
Программа получает на вход натуральные числа h, a, b.
Программа должна вывести одно натуральное число. Гарантируется, что a > b.

Перейти к ответам

Ответы на вопрос

Отвечает Матутис Анастасия.

Решение задачи «Улитка».

Пусть улитка за один полный день (день + ночь) поднимается на:

метров.

Но важно учитывать, что в последний день улитка уже не спускается, если она достигла вершины. Поэтому сначала нужно найти количество полных дней, после которых улитка еще не достигла вершины.

После полных суток высота улитки будет:

Но на следующий день она поднимется еще на метров и достигнет вершины:

Нужно найти минимальное такое .

Перенесем в правую часть:

Отсюда:

Так как количество дней должно быть целым, берем округление вверх:

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

В программе удобнее использовать целочисленное округление вверх:

если и — натуральные числа.

Алгоритм:

  1. Считываем .

  2. Если улитка за первый день достигает вершины (), ответ будет 1.

  3. Иначе считаем количество полных суток:

  1. Прибавляем 1 — это день подъема на вершину.

Пример:

h = 10
a = 3
b = 1

За сутки улитка поднимается:

метра.

После 3 суток она будет на высоте:

На 4-й день поднимется еще на 3 метра:

не хватило. После 4 суток высота будет 8 метров, а на 5-й день:

Она достигнет вершины.

Ответ:

5

Код на C++:

C++
#include 
using namespace std;

int main() { int h, a, b; cin >> h >> a >> b;

if (a >= h) { cout << 1; } else { cout << (h - a + (a - b) - 1) / (a - b) + 1; }

return 0; }

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос