Процитирую этот вопрос на SO (Spoiler alert!):
Этот вопрос был задан в интервью Oracle.
Как бы вы поделили число на 3 без использования операторов *, /, +, -,%?
Номер может быть подписан или не подписан.
Задача решаема, но посмотрите, сможете ли вы написать кратчайший код.
Правила:
- Выполните необходимое целочисленное деление (
/3
) - Не использовать операторы , не основанные на тексте
*
,/
,+
,-
, или%
(или их эквиваленты, такие как__div__
илиadd()
). Это также относится к операторам увеличения и уменьшения, напримерi++
илиi--
. Использование операторов для объединения строк и форматирования в порядке. Использование этих символов для разных операторов, таких как унарный-
оператор для отрицательных чисел, или*
для представления указателя в C, тоже нормально. - Входное значение может быть сколь угодно большим (независимо от того, что ваша система может обработать), как положительным, так и отрицательным
- Ввод может быть на STDIN или ARGV или введен любым другим способом
- Создайте кратчайший код, который вы можете сделать выше