Страница 7 из 7

Добавлено: 26 мар 2007, 10:45
aissp
а чего не догоняю я когда пишу типа

result &= array;

Безо всяких там многочисленных операций?

Добавлено: 26 мар 2007, 10:45
tiasur
Идея предложенная ajkj3em кажется единственной возможной, ну или хотя бы легко понятной.

Добавлено: 26 мар 2007, 10:46
tiasur
aissp писал(а):а чего не догоняю я когда пишу типа

result &= array;

Безо всяких там многочисленных операций?


0101010
1010101

Добавлено: 26 мар 2007, 10:50
tiasur
А вообще интересно когда ожидается решение таких задачек через несколько минут. Мы тут на несколько дней растянули и то не всем понятно.

Добавлено: 26 мар 2007, 10:50
aissp
o да, по понедельникам до обада туплю не подеццки. Санкс

Добавлено: 26 мар 2007, 11:00
tiasur
aissp писал(а):o да, по понедельникам до обада туплю не подеццки. Санкс
У меня умеренное накануне употребление спиртного отбивает способность к полноценному мышлению на несколько последуюших дней.

Добавлено: 26 мар 2007, 11:11
ajkj3em
tiasur писал(а):Идея предложенная ajkj3em кажется единственной возможной, ну или хотя бы легко понятной.

sz прав, меня там взглюкнуло, i^(i-1) выставляет верхний бит только для нуля

(edit) шутка :)

Добавлено: 26 мар 2007, 11:17
tiasur
ajkj3em писал(а):
tiasur писал(а):Идея предложенная ajkj3em кажется единственной возможной, ну или хотя бы легко понятной.

sz прав, меня там взглюкнуло, i^(i-1) выставляет верхний бит только для нуля
попытаюсь вечером осилить

Добавлено: 26 мар 2007, 11:19
ajkj3em
tiasur писал(а):
ajkj3em писал(а):
tiasur писал(а):Идея предложенная ajkj3em кажется единственной возможной, ну или хотя бы легко понятной.

sz прав, меня там взглюкнуло, i^(i-1) выставляет верхний бит только для нуля
попытаюсь вечером осилить
хехе .. нет, он таки не прав 0x80000000 --- i^(i-1) ---> 0xffffffff

Добавлено: 26 мар 2007, 11:22
sz
ajkj3em писал(а):
tiasur писал(а):
ajkj3em писал(а):
tiasur писал(а):Идея предложенная ajkj3em кажется единственной возможной, ну или хотя бы легко понятной.

sz прав, меня там взглюкнуло, i^(i-1) выставляет верхний бит только для нуля
попытаюсь вечером осилить
хехе .. нет, он таки не прав 0x80000000 --- i^(i-1) ---> 0xffffffff
Хех. Поймал. Неправ, фактически :)

Добавлено: 26 мар 2007, 11:30
ajkj3em
sz писал(а):Хех. Поймал. Неправ, фактически :)
я тут псевдо-теоретическое обоснование придумал :)

все по-битовые операции работают "однородно" для всех значений int.
то есть если нам надо поймать именно ноль, то нужно использовать
операцию, в которой ноль являетcя "особенным значением" (если
смотреть на биты input'а и output'а). из "легких" операций такой явлаетcя
только минус .. отcюда и пляшем.

Добавлено: 26 мар 2007, 11:39
tiasur
ajkj3em писал(а):
sz писал(а):Хех. Поймал. Неправ, фактически :)
я тут псевдо-теоретическое обоснование придумал :)

все по-битовые операции работают "однородно" для всех значений int.
то есть если нам надо поймать именно ноль, то нужно использовать
операцию, в которой ноль являетcя "особенным значением" (если
смотреть на биты input'а и output'а). из "легких" операций такой явлаетcя
только минус .. отcюда и пляшем.
Я еще много страниц назад пытался умножать на минус единицу, но это работает для положительных чисел. А вот так красиво складывать отрицательные с положительными не дошло до меня :(

Добавлено: 26 мар 2007, 14:24
Baguk
Оптимизация поиска проста: проверяется последний элемент на ноль. Если не ноль, то заменяется нулём. После этого вместо 2-х проверок (ноль или конец массива) надо проверять только на ноль. В 2 раза меньше сравнений.

Добавлено: 26 мар 2007, 15:16
Azazello
Baguk писал(а):Оптимизация поиска проста: проверяется последний элемент на ноль. Если не ноль, то заменяется нулём. После этого вместо 2-х проверок (ноль или конец массива) надо проверять только на ноль. В 2 раза меньше сравнений.
Да, я тоже подумал о том, чтобы дописать ноль в конец массива. Заменить последний элемент на ноль даже лучше.

Добавлено: 26 мар 2007, 16:39
tiasur
Azazello писал(а):
Baguk писал(а):Оптимизация поиска проста: проверяется последний элемент на ноль. Если не ноль, то заменяется нулём. После этого вместо 2-х проверок (ноль или конец массива) надо проверять только на ноль. В 2 раза меньше сравнений.
Да, я тоже подумал о том, чтобы дописать ноль в конец массива. Заменить последний элемент на ноль даже лучше.
Задача другая была.