
Улитка ползёт по вертикальному шесту высотой h метров, поднимаясь за день на a метров, а за ночь спускаясь на b метров. На какой день улитка доползёт до вершины шеста?
Входные данные
Программа получает на вход натуральные числа h, a, b. Гарантируется, что a>b.
Выходные данные
Программа должна вывести одно натуральное число.
Примечание
При решении этой задачи нельзя пользоваться условной инструкцией if и циклами.
Примеры
входные данные
10
3
2
выходные данные
8
входные данные
20
7
3
выходные данные
5
Ответы на вопрос

Для решения задачи, где улитка ползёт по шесту, поднимаясь за день и спускаясь ночью, нужно понять, сколько дней потребуется, чтобы улитка достигла вершины.
Описание задачи:
- Улитка ежедневно поднимается вверх на метров, но за ночь спускается на метров.
- Высота шеста — метров.
- Гарантируется, что , т.е. за день улитка поднимается больше, чем опускается за ночь.
Так как нельзя использовать условные инструкции и циклы, можно решить задачу, используя математические преобразования.
Анализ движения улитки
Пусть — это дневной подъём, а — ночной спуск. Тогда эффективное продвижение улитки за день с учётом ночного спуска составит метров.
Суть решения
Улитка движется по шесту с чистым подъёмом на метров каждый день. Однако в последний день она достигнет вершины шеста, не спускаясь ночью. Поэтому нужно определить количество дней до того момента, когда улитка поднимется на высоту или более метров без необходимости спуска.
Формула
Если улитке нужно подняться на высоту , то за последние сутки она достигнет вершины, поднявшись на метров, без учёта ночного спуска.
Это означает, что до последних суток ей нужно покрыть высоту метров (на которую она поднимется за предыдущие полные дни).
За каждый день, кроме последнего, улитка проходит метров, поэтому количество полных дней, которые понадобятся для преодоления метров, равно , где — это округление вверх.
Наконец, добавляем 1 день (последний день), когда улитка окончательно поднимется на вершину без спуска.
Итоговая формула:
Где можно представить как целочисленное деление с округлением вверх: для .
Пример кода на Python
Этот код решает задачу, не используя условных операторов или циклов:
Примеры
Входные данные: , ,
- Нужно преодолеть метров за полные дни.
- Каждый день улитка преодолевает метр.
- .
- Выход: .
Входные данные: , ,
- Нужно преодолеть метров за полные дни.
- Каждый день улитка преодолевает метра.
- .
- Выход: .
Таким образом, формула позволяет рассчитать количество дней для достижения вершины без использования условий и циклов.
Похожие вопросы









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









Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili