Seu desafio, caso você aceite aceitá-lo, é que, dado um número inteiro K >= 1, encontre números inteiros não negativos Ae de B modo que pelo menos uma das duas condições a seguir seja mantida:
K = 2^A + 2^BK = 2^A - 2^B
Se não existe tal Ae B, seu programa pode se comportar de qualquer forma. (Para esclarecer Ae Bpode ser igual.)
Casos de teste
Muitas vezes, existem várias soluções para um número, mas aqui estão algumas:
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
O último caso de teste 17179867136, deve ser executado em menos de 10 segundos em qualquer máquina relativamente moderna. Como é um código de golfe, o programa mais curto em bytes vence. Você pode usar um programa completo ou uma função.
16, ambos 5,4e 3,3são válidos.
A, Bser negativo? (por exemplo, -1, -1para 1)