Re[5]: Задачи для собеседования.
От: D. Petrov США  
Дата: 24.02.12 21:47
Оценка:
Здравствуйте, Паблик Морозов, Вы писали:

М>>чего-чего?! мы начинаем двигать самый младший бит влево до тех пор, пока на следующей позиции не окажется нуль.


ПМ>Понял, туплю.


Чего? Двигать? Цикл? Не, не слышал.
Проверяйте:

int f(int x)
{
    int minusOneBit = (x-1)&x;
    int e = x^minusOneBit;
    return minusOneBit|(e>>1);
}

int func(int x)
{
    if (!(x&1))
        return f(x);
    return ~f(~x);
}


PS: переворачивать списки — не мое, там же циклы нужны
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.