Пусть $$$a_{min}$$$ — это минимально возможный реальный урон, а $$$a_{max}$$$ —максимально возможный реальный урон.
Заметим, что если $$$a = 0$$$, то оно минимально возможное, а если число $$$a = 2^{n} - 1$$$, то оно максимально возможное. Соответственно, для первого случая $$$a_{min} = a$$$, а для второго — $$$a_{max} = a$$$.
Если $$$a$$$ не минимальное, то чтобы найти такое $$$a_{min}$$$, которое получается из $$$a$$$ изменением одного бита, необходимо заменить самую старшую единичку в битовом представлении на ноль, поскольку это гарантирует максимальную разницу между $$$a$$$ и $$$a_{min}$$$. Аналогично, чтобы получить максимальную разницу между $$$a_{max}$$$ и $$$a$$$, необходимо заменить самый старший ноль битового представления $$$a$$$ на единицу. При этом необходимо учитывать, что битовое представление числа $$$a$$$ фиксированно и имеет длину $$$n$$$.
Пройдём по всем $$$n$$$ битам числа $$$a$$$ и посчитаем таким образом $$$a_{min}$$$ и $$$a_{max}$$$.