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

Задача на python

Макс Трояновский Ученик (142), закрыт 1 месяц назад
Дано три цифры. Можно ли переставляя эти цифры местами, получить чётное число? При этом 0 не может быть первой цифрой. Если ответов несколько, вывести наибольший. Входные данные Три цифры, разделенные пробелами. Выходные данные Целое чётное трехзначное число, или 1, если невозможно.
Лучший ответ
Папа Высший разум (144943) 2 месяца назад
Ну проверь, есть ли среди цифр чётная, всего делов...
Пока не прибежали боты с перебором всех комбинаций цифр.

Вот код:
 x, y, z = sorted(map(int, input().split()), reverse=True)
if z % 2:
if y % 2 == 0: y, z = z, y
elif x % 2 == 0: x, y, z = y, z, x
print(*(1,) if z % 2 else (x, y, z), sep='')

Сортировка цифр по убыванию даёт нам наибольшее возможное число из них.
А дальше минимальную чётную цифру вынимаем и двигаем в конец, если там стояла нечётная.
Если все нечётные, то выводим 1.

Отдельные проверки на ноль не нужны, т.к. если ноль есть, то сортировка отправит его в конец.

А вот насчёт трёх нулей твоя задача ничего не говорит. Что выводить, 0 или 1? Из трёх нулей можно составить чётное число, но оно не трёхзначное.
Макс ТрояновскийУченик (142) 2 месяца назад
Код работает, но если вводить например 0 0 2, то в вывод идёт не 200, а 002
Папа Высший разум (144943) Макс Трояновский, разве? Ввёл 0 2 0, выводит 200.
Остальные ответы
Похожие вопросы