# task: Счастливый билет # Дано шестизначное число и число N. Между цифрами можно вставлять +, -, ничего. # Нужно вывести все выражения, равные N, либо сообщение об отсутствии решений. import itertools def generate_expressions(digits): ops = ["+", "-", ""] for comb in itertools.product(ops, repeat=5): expr = digits[0] for i in range(5): expr += comb[i] + digits[i + 1] yield expr def safe_eval(expr): try: return eval(expr) except: return None def solve(ticket, target): results = [] digits = list(ticket) for expr in generate_expressions(digits): val = safe_eval(expr) if val == target: results.append(f"{expr}={target}") return results def is_valid_ticket(ticket): return ticket.isdigit() and len(ticket) == 6 and int(ticket) > 0 def is_valid_target(target): return target.isdigit() and 0 < int(target) < 10**9 while True: print("\nВыберите действие:") print("1 - Ввести данные") print("2 - Выход") choice = input("Ваш выбор: ").strip() if choice == "2": print("Выход из программы.") break elif choice == "1": ticket = input("Введите шестизначный номер билета: ").strip() target = input("Введите число N (0 < N < 1e9): ").strip() if not is_valid_ticket(ticket): print("Ошибка: билет должен быть шестизначным натуральным числом.") continue if not is_valid_target(target): print("Ошибка: N должно быть натуральным числом (0 < N < 1e9).") continue target = int(target) solutions = solve(ticket, target) if solutions: print("\nНайденные решения:") for s in solutions: print(s) else: print("Решение не существует.") else: print("Некорректный выбор. Попробуйте снова.")