Citando esta pregunta en SO (¡alerta de spoiler!):
Esta pregunta ha sido formulada en una entrevista de Oracle.
¿Cómo dividiría un número por 3 sin usar operadores *, /, +, -,%?
El número puede estar firmado o sin firmar.
La tarea es solucionable, pero vea si puede escribir el código más corto.
Reglas:
- Realice la división entera requerida (
/3
) - No utilice los operadores no basados en texto
*
,/
,+
,-
, o%
(o sus equivalentes, tales como__div__
oadd()
). Esto también se aplica a operadores de incremento y decremento, comoi++
oi--
. El uso de operadores para la concatenación y formateo de cadenas está bien. El uso de estos caracteres para diferentes operadores, como el-
operador unario para números negativos, o*
para representar un puntero en C también está bien. - El valor de entrada puede ser arbitrariamente grande (lo que sea que su sistema pueda manejar), tanto positivo como negativo
- La entrada puede estar en STDIN o ARGV o ingresada de cualquier otra manera
- Crea el código más corto que puedas para hacer lo anterior