В давние времена считалось, что если какая-то местность является треугольником, то в ней заключено страшное зло.
При этом люди оценивали риск встретить зло по форме этого треугольника:
- в остроугольном треугольнике вероятность встретить зло крайне мала;
- в тупоугольном — велика;
- в прямоугольном — 100%.
Напишите программу, которая по длине сторон треугольной местности, определяет вероятность встретить зло.
Формат ввода
Три числа — длины сторон треугольной местности.
Формат вывода:
Вероятность встретить зло согласно поверью:
- крайне мала;
- велика;
- 100%.
Пример
Ввод
3
5
4
Вывод
100%
Ввод
6
3
4
Вывод
велика
Решение
Задача на тему сортировки и сравнения.
Нам нужно проверить является ли треугольник прямоугольным, остроугольным или тупоугольным.
Для определения главного угла можно воспользоваться теоремой Пифагора: В прямоугольном треугольнике квадрат гипотенузы (самой длинной стороны) равен сумме квадратов катетов (оставшихся двух сторон). Если квадрат самой длинной стороны меньше суммы квадратов оставшихся – треугольник будет остроугольным. В противном случае – тупоугольным.
Остается найти самую длинную и две остальных стороны. С этой задачей мы уже научились справляться.
Для определения соотношения сторон, воспользуемся приемом из задачи L. Музыкальный инструмент
Посмотреть код
Решение
a = int(input())
b = int(input())
c = int(input())
maximum = max(a, b, c) ** 2 * 2
other = a ** 2 + b ** 2 + c ** 2
if maximum == other:
print('100%')
elif maximum > other:
print('велика')
else:
print('крайне мала')
Добрый день!
я немного иначе решил, хоть и не так изящно, как в решении на этом сайте
возможно, людям без знаний теоремы Пифагора это решение будет ближе
из школьного курса мне запомнилось (возможно не правильно запомнилось, но это помогло решить задачу), что гипотенуза и прямоугольном и тупоугольном треугольнике больше, чем любой из катетов
соответственно, я нашел самую длинную, среднюю и короткую сторону и по правилу нахождения третьей стороны в каждом из видов треугольников написал код
первое условие – для прямоугольного треугольника, где сумма квадратов коротких сторон равна квадрату третьей стороны
второе условие – для тупоугольного треугольника, где сумма квадратов коротких сторон меньше квадрата самой длинной стороны
и исключение – третий вид треугольника, который при не попадании под предыдущие условия является осроугольным
a = int(input())
b = int(input())
c = int(input())
maximum = max(a ,b, c)
minimum = min(a, b, c)
middle = a + b + c – maximum – minimum
if maximum ** 2 == (middle ** 2 + minimum ** 2):
print(“100%”) #для прямоугольного треугольника
elif (middle ** 2 + minimum ** 2) < maximum ** 2:
print(“велика”) #для тупоугольного треугольника
else:
print(“крайне мала”) #для остальных случае – остроугольного треугольника
По сути это то же самое решение. Разница в подходах к тому, нужно ли определять среднюю и короткую сторону. Если присмотреться внимательно, то вы сравниваете квадрат самой длинной стороны с суммой квадратов двух оставшихся, пользуясь теоремой Пифагора (a ** 2 + b ** 2 = c ** 2). Вы вычисляете эту сумму непосредственно складывая минимальную и среднюю стороны, я же исхожу из мысли, что можно посчитать сумму квадратов всех сторон и вычесть квадрат длинной, что в итоге тоже даст нам сумму квадратов двух оставшихся сторон. Правда, в этом решении нет непосредственного вычисления суммы квадратов двух оставшихся сторон. Вместо этого мы пользуемся тем, что если a + b = c, то a + b + c = 2 * c.
# Первую проверку сделаем на то, что треугольник прямоугольный (по т. Пифагора разумеется) и т.к. наибольшую сторону из заданных не вычислили, то переберем все 3 варианта через логическое ИЛИ.
# Вторая проверка будет по свойству тупоугольного треугольника, что если квадрат одной стороны БОЛЬШЕ суммы квадратов других сторон, то он тупоугольный с**2 > a**2 + b**2. Также 3 варианта для разных условий, объединенных логическим ИЛИ.
# Аналогичное свойство есть для остроугольного: если с**2 < a**2 + b**2, то треугольник остроугольный.
Но т.к. это единственный оставшийся вариант из интересующих нас треугольников, пропишем его в теле else.
a = int(input())
b = int(input())
c = int(input())
if a == (b**2 + c**2)**0.5 or b == (a**2 + c**2)**0.5 or c == (a**2 + b**2)**0.5:
print(‘100%’)
elif a > (b**2 + c**2)**0.5 or b > (a**2 + c**2)**0.5 or c > (a**2 + b**2)**0.5:
print(‘велика’)
else:
print(‘крайне мала’)