La tua sfida, se scegli di accettarla, è, dato un numero intero K >= 1
, di trovare numeri interi non negativi A
e B
tale che valga almeno una delle due seguenti condizioni:
K = 2^A + 2^B
K = 2^A - 2^B
Se non esiste tale A
e B
, il programma potrebbe comportarsi in qualsiasi modo. (Per chiarire, A
e B
può essere uguale.)
Casi test
Esistono spesso più soluzioni per un numero, ma eccone alcune:
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
L'ultimo caso di test, 17179867136
, deve essere eseguito in meno di 10 secondi su qualsiasi macchina relativamente moderna. Questo è un codice golf, quindi vince il programma più breve in byte. È possibile utilizzare un programma completo o una funzione.
16
, entrambi 5,4
e 3,3
sono validi.
A
, B
essere negativo? (ad es. -1, -1
per 1)