Tantangan Anda, jika Anda memilih untuk menerimanya, adalah, diberikan bilangan bulat K >= 1
, temukan bilangan bulat non-negatif A
dan B
setidaknya satu dari dua syarat berikut ini berlaku:
K = 2^A + 2^B
K = 2^A - 2^B
Jika tidak ada A
dan B
, program Anda mungkin berperilaku dengan cara apa pun. (Untuk memperjelas, A
dan B
bisa sama.)
Uji kasus
Seringkali ada beberapa solusi untuk suatu angka, tetapi berikut ini beberapa:
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
Kasing uji terakhir 17179867136
,, harus berjalan di bawah 10 detik pada mesin yang relatif modern. Ini adalah kode golf, jadi program terpendek dalam byte menang. Anda dapat menggunakan program atau fungsi lengkap.
16
, keduanya 5,4
dan 3,3
valid.
A
, B
menjadi negatif? (mis. -1, -1
untuk 1)