Meydan okumanız, kabul etmeyi seçmeniz durumunda, bir tamsayı verildiğinde K >= 1
, negatif olmayan bir tamsayı bulmak A
ve B
aşağıdaki iki koşuldan en az birinin geçerli olmasını sağlamaktır:
K = 2^A + 2^B
K = 2^A - 2^B
Eğer böyle bir şey yoksa A
ve B
programınız herhangi bir şekilde davranabilir. (Açıklık için, A
ve B
eşit olabilir.)
Test durumları
Genellikle bir sayı için birden fazla çözüm vardır, ancak burada birkaç tane vardır:
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
Geçen test durumu, 17179867136
, 10 saniyenin altında çalıştırmalısınız herhangi nispeten modern makine üzerinde. Bu bir kod golf, yani bayt cinsinden en kısa program kazanır. Tam bir program veya işlev kullanabilirsiniz.
16
, hem 5,4
ve 3,3
geçerlidir.
A
, B
olumsuz olabilir mi? (örn -1, -1
. 1 için)