Seu desafio, caso você aceite aceitá-lo, é que, dado um número inteiro K >= 1
, encontre números inteiros não negativos A
e de B
modo que pelo menos uma das duas condições a seguir seja mantida:
K = 2^A + 2^B
K = 2^A - 2^B
Se não existe tal A
e B
, seu programa pode se comportar de qualquer forma. (Para esclarecer A
e B
pode 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,4
e 3,3
são válidos.
A
, B
ser negativo? (por exemplo, -1, -1
para 1)