КИТА unofficial

Ваши интересы => Викторины и конкурсы => Тема начата: Alder от Август 08, 2012, 05:43:11



Название: Искусство программирования - 11
Отправлено: Alder от Август 08, 2012, 05:43:11
Этот вопрос задавался на собеседованиях в Oracle. Сразу скажу - решения легко гуглятся, поэтому давайте будем честными и подумаем сами.

Итак:
Как разделить число на 3 без использования операторов *, /, +, -, %?

Достоверно правильного (с точки зрения Oracle) решения нет, поэтому эта викторина больше на красоту кода :)


Название: Re: Искусство программирования - 11
Отправлено: LazarusLong от Август 08, 2012, 07:51:02
простейший вариант, который приходит в голову путем решения нехитрого уравнения

int x >> 2(log23)

он бы работал, если бы операции сдвига работали с аргументами с плавающей точкой))) Хотя я не пробовал) может и работают)


Название: Re: Искусство программирования - 11
Отправлено: Olorin от Август 09, 2012, 12:24:08
Alder, деление целочисленное или остаток тоже может быть?


Название: Re: Искусство программирования - 11
Отправлено: Alder от Август 09, 2012, 01:41:23
Alder, деление целочисленное или остаток тоже может быть?
Обычное деление :) Не целочисленное.


Название: Re: Искусство программирования - 11
Отправлено: LazarusLong от Август 09, 2012, 07:24:40
Блин, помню был алгоритм на основе сдвигов) Я его даже когда-то знал) руки чешутся загуглить, но пока не буду))


Название: Re: Искусство программирования - 11
Отправлено: Артем от Сентябрь 02, 2012, 03:24:36
Alder, оглашай ответ :)


Название: Re: Искусство программирования - 11
Отправлено: Olorin от Сентябрь 05, 2012, 10:13:51
Угу, не томи, оглашай уже )


Название: Re: Искусство программирования - 11
Отправлено: Alder от Сентябрь 05, 2012, 01:31:22
Жаль, что никто не предложил больше вариантов.
Все ответы можно почитать здесь - http://stackoverflow.com/questions/11694546/divide-a-number-by-3-without-using-operators


Название: Re: Искусство программирования - 11
Отправлено: Zarkon от Сентябрь 07, 2012, 05:11:17
мдя. я даже с ответом нихера не врубил