Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Прошу решить задачу на Python

Meps Mepsikovich Ученик (52), на голосовании 5 дней назад
Ваш друг решил посетить Карелию - место проведения Петрозаводских сборов по программированию и край красивых лесов и озёр. По возвращении оттуда, он рассказал вам, что побывал в городе Сортавала, и обнаружил там две треугольные площади в центре города. Он сказал, что встав на углу возле городской мэрии он смог сначала обойти по периметру первую площадь, а затем вторую. А именно он сообщил вам следующее:

По его словам, сначала он прошёл a метров по прямой, повернув прошёл ещё b
, затем опять повернул и прошёл c метров, после чего оказался обошёл по периметру всю первую площадь и вернулся к углу мэрии. Затем, повернув прошёл d метров, потом повернув прошёл e метров, и наконец повернув в последний раз и пройдя f метров снова оказался в на углу у мэрии, пройдя по периметру вокруг второй площади.
Вам стало интересно, правдивы ли его истории, но проверить вы можете только 6 чисел a ,b,c , d , e , f
. Скажите, правда ли что теоретически возможно построить 2
треугольные площади с общей вершиной, имеющих стороны a , b , c и d , e , f
соответственно в порядке обхода от общей вершины. Если это возможно, то сообщите так же, мог ли друг пройти случайно во второй раз по той же площади что и в первый.
Если невозможно построить треугольные площади с заданными длинами сторон — выведите
0
.
Если возможно построить треугольные площади с заданными длинами сторон, то в первой строке выведите
1
, и во второй строке выведите 0, если нельзя пройти второй раз случайно по первой площади, и
1
если можно.
Пример 1
Входные данные

2 3 2
8 9 10
Выходные данные

1
0
Пример 2
Входные данные

3 4 5
5 4 3
Выходные данные

1
1
Пример 3
Входные данные

1 2 3
2 3 2
Выходные данные

0
Голосование за лучший ответ
Программист Просветленный (43925) 1 месяц назад
фу гой зачем ты сюда спрашиваешь
Meps MepsikovichУченик (52) 1 месяц назад
А куда надо?
Рустам Абдрашитов Мудрец (10562) 1 месяц назад
На
 def can_form_triangle(a, b, c): 
return a + b > c and a + c > b and b + c > a

def get_triangle_sides(prompt):
while True:
try:
sides = tuple(map(int, input(prompt).split()))
if len(sides) != 3:
raise ValueError("Должно быть введено ровно три числа.")
if any(side <= 0 for side in sides):
raise ValueError("Все стороны должны быть положительными числами.")
return sides
except ValueError as e:
print(f"Ошибка ввода: {e}. Попробуйте снова.")

def main():
a, b, c = get_triangle_sides("Введите стороны первой площади (a, b, c): ")
d, e, f = get_triangle_sides("Введите стороны второй площади (d, e, f): ")

first_triangle_possible = can_form_triangle(a, b, c)
second_triangle_possible = can_form_triangle(d, e, f)

if first_triangle_possible and second_triangle_possible:
print("1")
if {a, b, c} == {d, e, f}:
print("1")
else:
print("0")
else:
print("0")

if __name__ == "__main__":
main()
Вертолётов 625 Мудрец (13605) 1 месяц назад
Код:
 def can_form_triangle(a, b, c): 
return a + b > c and a + c > b and b + c > a

def is_same_triangle(sides1, sides2):
return sorted(sides1) == sorted(sides2)

def check_walk(a, b, c, d, e, f):
triangle1 = (a, b, c)
triangle2 = (d, e, f)

# Проверяем возможность построения треугольников
if not can_form_triangle(*triangle1) or not can_form_triangle(*triangle2):
return 0

# Если треугольники одинаковы, случайный проход возможен
if is_same_triangle(triangle1, triangle2):
return (1, 1)

# Иначе случайный проход невозможен
return (1, 0)

# Ввод данных
a, b, c = map(int, input().split())
d, e, f = map(int, input().split())

# Проверяем и выводим результат
result = check_walk(a, b, c, d, e, f)
if isinstance(result, int):
print(result)
else:
print(result[0])
print(result[1])
Похожие вопросы