Tantangan Anda, jika Anda memilih untuk menerimanya, adalah, diberikan bilangan bulat K >= 1, temukan bilangan bulat non-negatif Adan B setidaknya satu dari dua syarat berikut ini berlaku:
K = 2^A + 2^BK = 2^A - 2^B
Jika tidak ada Adan B, program Anda mungkin berperilaku dengan cara apa pun. (Untuk memperjelas, Adan Bbisa 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,4dan 3,3valid.
A, Bmenjadi negatif? (mis. -1, -1untuk 1)