Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.06.2009, 20:17   #31
Longedok
Пользователь
 
Аватар для Longedok
 
Регистрация: 14.07.2007
Сообщений: 40
По умолчанию

Цитата:
Сообщение от NuMeR Посмотреть сообщение
...т.е. мы можем получить знак числа. например таким образом -2*(i shr 31)+1
Во, я тоже пытался думать куда-то в эту сторону. То есть получить или -1 или 1 в зависимости от отрицательности/положительности числа. Но что-то как-то думалки не хватило . За задачи спасибо - очень интересные.

В общем, вот моё решение к третьей задаче:
Код:
(not (((x or 1)mod 2)*x) + 1) shr 31
В моём решении можно заметить наглое копирование решения прошлой задачи - ((x or 1)mod 2)*x. Оно используется для того, чтобы сначала получить модуль числа, а затем инвертировать его прибавив единицу (для получиения отрицательного числа). Если на вход будет подано любое, отличное от нуля число, то в результате получится отрицательное число, сдвинув которое, на 31 разряд вправо мы и получим искомую единицу. При входном нуле, после всех этих манипуляций получится так же 0, и конечный результат, естественно, окажется нулевым.
Котэ покарает тебя, %username%!

Последний раз редактировалось Stilet; 30.06.2009 в 16:11.
Longedok вне форума Ответить с цитированием
Старый 30.06.2009, 16:09   #32
NuMeR
Пользователь
 
Регистрация: 25.06.2009
Сообщений: 39
По умолчанию

попробуйте всетаки решить не зная разрядность числа
NuMeR вне форума Ответить с цитированием
Старый 30.06.2009, 16:28   #33
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
NuMeR
А ты решения знаешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.06.2009, 16:45   #34
NuMeR
Пользователь
 
Регистрация: 25.06.2009
Сообщений: 39
По умолчанию

да, знаю
NuMeR вне форума Ответить с цитированием
Старый 30.06.2009, 16:56   #35
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
NuMeR
Ну так поделись знанием а заодно скажи где такая "оптимизация" может применяться.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.06.2009, 16:57   #36
vvviperrr
Тупой студент
Форумчанин
 
Аватар для vvviperrr
 
Регистрация: 12.05.2007
Сообщений: 614
По умолчанию

возможно я что то не так понял, но решение к третьей
Цитата:
((x && 1) || 0)
vvviperrr вне форума Ответить с цитированием
Старый 30.06.2009, 17:11   #37
NuMeR
Пользователь
 
Регистрация: 25.06.2009
Сообщений: 39
По умолчанию

vvviperrr, x && 1 = 1 если x - нечетное, т.е. мы узнаем четность числа, || 0 бессмысленно помоему, т.к. ничего не делает, ваш код только проверяет четность числа.
Stilet, некоторые читатели возможно хотят сами решить, могу отправить ответ вам в личку. а "оптимизация" эта вроде бы как нигде не применяется, только в качестве разных головоломок
NuMeR вне форума Ответить с цитированием
Старый 30.06.2009, 17:20   #38
vvviperrr
Тупой студент
Форумчанин
 
Аватар для vvviperrr
 
Регистрация: 12.05.2007
Сообщений: 614
По умолчанию

2NuMeR
при чем тут четность?) я же юзаю не побитовые операции, а обычные, логические

Цитата:
нужно записать формулой следующую функцию
function f(x:longint):longint;
begin
if x=0 then f:=0 else f:=1;
end;
хотя да, это можно выразить просто через x && 1, т.е если x=0, результат 0, иначе 1.
Или же юзать только побитовые операции? таких ограничений не видел)
vvviperrr вне форума Ответить с цитированием
Старый 30.06.2009, 17:26   #39
NuMeR
Пользователь
 
Регистрация: 25.06.2009
Сообщений: 39
По умолчанию

задача написать код на паскале, а на паскале вроде только побитовые
NuMeR вне форума Ответить с цитированием
Старый 01.07.2009, 12:29   #40
NuMeR
Пользователь
 
Регистрация: 25.06.2009
Сообщений: 39
По умолчанию

задачка №4
записать формулой функцию sign(x), т.е.
Код:
if x<>0 then
begin
  if x>0 then 
    f:=1
  else
    f:=-1;
end
else
  f:=0;
числа целые, разрядность числа неизвестна
NuMeR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игры для программистов [Smarik] Gamedev - cоздание игр: Unity, OpenGL, DirectX 78 12.07.2010 03:42
Задачка для программистов meira87 Свободное общение 6 24.03.2009 20:43
Игры для программистов! Rembo Свободное общение 17 29.12.2007 09:22
ДЛЯ ПРОГРАММИСТОВ!!! VOLODIA Свободное общение 0 09.04.2007 23:01