
Ограничение времени: 1 сОграничение памяти: 256MУлиточные бегаКаждые 100 лет в Стране Улиток
проводятся улиточные бега на дистанции L сантиметров. Это станет для вас неожиданностью, но в этом столетии они проводятся именно сегодня!В этом году организаторы приняли решение провести бега на новой трассе - прямоугольнике размера A × B сантиметров. Согласно правилам, участники начнут бежать из нижнего левого угла прямоугольника против часовой стрелки в соответствии со схемой ниже: К сожалению, организаторы забега не могут определить, на какой стороне трассы должен быть расположен финиш, чтобы участники пробежали ровно L сантиметров. Напишите программу, которая поможет определить сторону прямоугольника, на которой должна находиться точка финиша.Обратите внимание, что длина забега может быть больше периметра прямоугольника. В таком случае, участники должны будут пробежать несколько кругов прежде чем финишировать.Формат входных данныхВводятся три целых числа A, B, L (2 ≤ A, B ≤ 106, 1 ≤ L ≤ 109) - длина и ширина прямоугольника и длина пути соответственно. Гарантируется, что улитка не останавливается в углу прямоугольника.Формат результатаВыведите TOP, если улитка остановится на верхней стороне прямоугольника, BOTTOM - на нижней, LEFT - на левой, RIGHT - на правой стороне прямоугольника.ПримерыВходные данные2411Результат работыLEFTВходные данные2413Результат работыBOTTOM

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

Ответ:
#include <iostream>
using namespace std;
int main()
{
int L,A,B,P;
cin >> A >> B >> L;
P = (A+B)*2;
if(L > P)
L %= P;
if(L > 0 && L < A)
{
cout << "BOTTOM";
return 0;
}
if(L > A && L < A+B)
{
cout << "RIGHT";
return 0;
}
if(L > A+B && L < 2*A + B)
{
cout << "TOP";
return 0;
}
if(L > P - B && L < P)
{
cout << "LEFT";
return 0;
}
}
Объяснение: easy, bro



Для решения этой задачи нам нужно определить, на какой стороне прямоугольника должна находиться точка финиша для того, чтобы улитка пробежала заданное расстояние L.
Прежде всего, мы можем вычислить периметр прямоугольника, который равен P = 2 * (A + B).
Затем мы должны определить, сколько полных оборотов улитка сможет сделать вокруг прямоугольника, прежде чем достигнет финиша. Для этого мы вычислим разницу между длиной пути L и периметром P: diff = L - P.
Если diff < 0, это означает, что улитка не сможет сделать ни одного полного оборота вокруг прямоугольника и достигнуть финиша. В этом случае финиш будет находиться на одной из сторон прямоугольника, и мы можем определить его положение, используя следующую логику:
- Если L < A, то финиш будет на нижней стороне прямоугольника.
- Если L > A и L < (A + B), то финиш будет на правой стороне прямоугольника.
- Если L > (A + B), то финиш будет на верхней стороне прямоугольника.
Если diff >= 0, это означает, что улитка сможет сделать один или несколько полных оборотов вокруг прямоугольника, прежде чем достигнет финиша. В этом случае финиш будет находиться на левой стороне прямоугольника.
Вот реализация алгоритма на языке Python:
pythondef find_finish_side(A, B, L):
P = 2 * (A + B)
diff = L - P
if diff < 0:
if L < A:
return "BOTTOM"
elif L < (A + B):
return "RIGHT"
else:
return "TOP"
else:
return "LEFT"
# Чтение входных данных
A, B, L = map(int, input().split())
# Поиск стороны финиша
finish_side = find_finish_side(A, B, L)
# Вывод результата
print(finish_side)
Примеры:
Входные данные:
24 11 8
Результат работы:
cssLEFT
Входные данные:
24 13 15
Результат работы:
cssBOTTOM
Надеюсь, это поможет!


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