определить вид числа без условных операторов и циклов

Задача: Дано целое число n. Выведите следующее за ним четное число. Задачу необходимо решить целочисленными операциями без использования условных операторов и\или циклов. ввод: 5, вывод: 6; ввод: 6, вывод: 8


Ответы (1 шт):

Автор решения: Zhihar

Выведите следующее за ним четное число

подсказка 1: если разделить целочисленно целое число на 2, а потом умножить на 2, то получиться... чётное число не больше изначального

дальше думайте сами

подсказка 2.1: если сбросить самый правый бит натуральному числу, то получится чётное число не больше изначального

подсказка 2.2: числа в битовом представлении легко записывать через 0b<битовое представление>, например 0xb1110111

дальше думайте сами

подсказка 3: условия можно записывать неявно, преобразовывая булев тип в целочисленный, например int(False) = 0, а int(True) = 1, а полученные 0/1 очень хорошо умножаются на любые натуральные числа :)

дальше думайте сами

В общем ваша задача решается минимум 3 способами + их вариациями (т.е. решений 5-10 сделать можно разной степени извращённости)

→ Ссылка