Su desafío, si elige aceptarlo, es, dado un número entero K >= 1, encontrar números enteros no negativos Ay B tal que al menos una de las dos condiciones siguientes se cumpla:
K = 2^A + 2^BK = 2^A - 2^B
Si no existe tal Ay B, su programa puede comportarse de cualquier manera. (Para aclarar, Ay Bpuede 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,4y 3,3son válidos.
A, Bser negativo? (por ejemplo, -1, -1para 1)