Citando esta pergunta no SO (alerta de spoiler!):
Esta pergunta foi feita em uma entrevista da Oracle.
Como você dividiria um número por 3 sem usar os operadores *, /, +, -,%?
O número pode ser assinado ou não assinado.
A tarefa é solucionável, mas veja se você pode escrever o código mais curto.
Regras:
- Execute a divisão inteira necessária (
/3
) - Não use os operadores não baseados em texto
*
,/
,+
,-
, ou%
(ou seus equivalentes, como__div__
ouadd()
). Isso também se aplica a operadores de incremento e decremento, comoi++
oui--
. O uso de operadores para concatenação e formatação de string está OK. Usar esses caracteres para diferentes operadores, como-
operador unário para números negativos, ou*
para representar um ponteiro em C também é bom. - O valor de entrada pode ser arbitrariamente grande (seja qual for o seu sistema), tanto positivo quanto negativo
- A entrada pode ser em STDIN ou ARGV ou inserida de qualquer outra maneira
- Crie o código mais curto possível para fazer o acima