Su desafío, si elige aceptarlo, es, dado un número entero K >= 1
, encontrar números enteros no negativos A
y B
tal que al menos una de las dos condiciones siguientes se cumpla:
K = 2^A + 2^B
K = 2^A - 2^B
Si no existe tal A
y B
, su programa puede comportarse de cualquier manera. (Para aclarar, A
y B
puede ser igual).
Casos de prueba
A menudo hay múltiples soluciones para un número, pero aquí hay algunas:
K => A, B
1 => 1, 0
15 => 4, 0 ; 16 - 1 = 15
16 => 5, 4 ; 32 - 16 = 16; also 3, 3: 8 + 8 = 16
40 => 5, 3 ; 2^5 + 2^3 = 40
264 => 8, 3
17179867136 => 34, 11 ; 17179869184 - 2048 = 17179867136
El último caso de prueba 17179867136
, debe ejecutarse en menos de 10 segundos en cualquier máquina relativamente moderna. Este es un código de golf, por lo que gana el programa más corto en bytes. Puede usar un programa completo o una función.
16
, ambos 5,4
y 3,3
son válidos.
A
, B
ser negativo? (por ejemplo, -1, -1
para 1)