#математика
Собственно, задача в условии. 7->6 (так как 111 - 110) 6->4 (110 - 100) 5->4 (101 - 100) Проблема в том, что нельзя юзать строки, циклы и ветвления(с этим задача становится элементарной). Только арифметику и битовую арифметику. Просьба подсказать в каком направлении копать. Самостоятельно удалось решить только для частных случаев, либо с использованием запрещенных элементов (типа поиска последнего вхождения подстроки или цикла смещения)
Ответы
Ответ 1
@knes пример из учебника a = a & (a - 1);Ответ 2
Если использовать битовую арифметику, все элементарно: x = x & ~1;Ответ 3
Задача на самом то деле простая: Надо просто логически поразмыслить: Если число в двоичной записи заканчивается на 0, значит число четное (и обратно) Если число в двоичной записи заканчивается на 1, значит оно нечетное (и обратно) Чтобы заменить последнюю цифру с 1 на 0 надо просто отнять 1 То есть в Java псевдокоде: int replaceLastOne(int number) { if(number%2==1) return number-1; else return number; }
Комментариев нет:
Отправить комментарий