Дано целое число
. Выведите следующее за ним четное число.
Решение:
Вопрос: какая наука стоит за этим? Можно быстро догадаться, но почему это работает? Предполагаю, что эта задача является входом в какую-то интересную часть математики (дискретной математики).
Решение просто собирается из готовых кусочков.
Например, вариант рассуждений 1:1. Выровняем наше число
вниз на границу, кратную 2
2. Прибавим к нему 2
Шаг 1 (выравнивание вниз) реализуется как
1.1. Разделим наше число на 2 с округлением вниз
1.2. Умножим результат на 2
Целочисленное деление с округлением вниз языки программирования обычно предоставляют сразу "из коробки". В вашем случае это именно
//. В результате сразу получаем именно приведенную вами формулу
Вариант рассуждений 2:1. Увеличим наше число на 1
2. Выровняем его
вверх на границу, кратную 2.
Шаг 2 (выравнивание вверх) реализуется как
2.1. Разделим число на 2 с округлением вверх
2.2. Умножим результат на 2
Шаг 2.1 (деление с округлением вверх) реализуется как
2.1.1. Прибавим к числу 1
2.1.2. Разделим число на 2 с округлением вниз
Целочисленное деление с округлением вниз, еще раз, языки программирования обычно предоставляют сразу "из коробки".
Собираем все вместе и получаем
print((n + 1 + 1) // 2 * 2)
Несложно показать, что эта формула эквивалентна вашей.
Вариант рассуждений 3:1. Увеличим наше число на 2
2. Выровняем его
вниз на границу, кратную 2.
Это тоже даст нам вариант