Ihre Herausforderung besteht darin, bei einer bestimmten Ganzzahl K >= 1nicht negative Ganzzahlen zu finden, Aund zwar B so, dass mindestens eine der beiden folgenden Bedingungen zutrifft:
K = 2^A + 2^BK = 2^A - 2^B
Wenn es ein solches Aund nicht gibt B, kann sich Ihr Programm auf irgendeine Weise verhalten. (Zur Verdeutlichung Aund Bkann gleich sein.)
Testfälle
Es gibt oft mehrere Lösungen für eine Zahl, aber hier sind einige:
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
Der letzte Test Fall 17179867136, muss in unter 10 Sekunden läuft auf jede relativ moderne Maschine. Dies ist ein Codegolf, also gewinnt das kürzeste Programm in Bytes. Sie können ein vollständiges Programm oder eine Funktion verwenden.
16, beide 5,4und 3,3sind gültig.
A, Bnegativ sein? (zB -1, -1für 1)