Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

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

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

По его словам, сначала он прошёл 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

По дате
По рейтингу
Аватар пользователя
Просветленный
8мес

фу гой зачем ты сюда спрашиваешь

Аватар пользователя
Мудрец
8мес

Код:

123456789101112131415161718192021222324252627282930313233
 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]) 
 
Аватар пользователя
Мудрец
8мес

На

123456789101112131415161718192021222324252627282930313233
 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()