
Напишите программу, которая считывает два целых числа a и b и выводит наибольшее значение из них. Числа — целые от 1 до 1000.
При решении задачи можно пользоваться только целочисленными арифметическими операциями +, -, *, //, %, =. Нельзя пользоваться нелинейными конструкциями: ветвлениями, циклами, функциями вычисления модуля, извлечения квадратного корня.
Использование функции max запрещено!
Входные данные
Вводятся два целых числа a и b.
Выходные данные
Выведите ответ на задачу.
Примеры
входные данные
8
5
выходные данные
8
входные данные
5
8
выходные данные
8
входные данные
5
5
выходные данные
5
Заранее спасибо. :-)
Ответы на вопрос

Для решения задачи, нужно вывести наибольшее из двух целых чисел a
и b
, не используя условных операторов, циклов и встроенных функций, таких как max()
. Мы можем воспользоваться только целочисленными операциями.
Чтобы решить задачу, можно воспользоваться следующей идеей: из двух чисел всегда одно больше или равно другому. Если мы отнимем от большего меньший, то разница будет положительной, если первое число больше, и нулевой, если числа равны. Таким образом, можно воспользоваться этой разницей, чтобы выделить большее из чисел.
Подход:
- Считаем разницу между числами:
a - b
. - Если эта разница положительная, то
a
больше, если разница равна нулю, то числа равны, а если разница отрицательная, тоb
больше. - Чтобы не использовать условных операторов, можно воспользоваться операцией целочисленного деления или других математических операций, чтобы "вычленить" большее число.
Для этого можно воспользоваться такой формулой:
Пояснение:
- Разница
abs(a - b)
будет равна положительному числу, которое показывает, насколько одно число больше другого. - Сложив
a
,b
и абсолютную разницу, мы получаем сумму, где большее число будет "выделено" благодаря сложению. При делении на 2 результат округляется, и мы получаем большее из чисел.
Пример 1: Ввод:
Решение:
a = 8
,b = 5
abs(8 - 5) = 3
(8 + 5 + 3) // 2 = 16 // 2 = 8
Вывод:8
Пример 2: Ввод:
Решение:
a = 5
,b = 8
abs(5 - 8) = 3
(5 + 8 + 3) // 2 = 16 // 2 = 8
Вывод:8
Пример 3: Ввод:
Решение:
a = 5
,b = 5
abs(5 - 5) = 0
(5 + 5 + 0) // 2 = 10 // 2 = 5
Вывод:5
Этот способ работает корректно для всех входных данных от 1 до 1000, так как не использует запрещенные конструкции и операции.
Похожие вопросы









Топ вопросов за вчера в категории Информатика









Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili