あなたの挑戦であり、整数与えられた、あなたはそれを受け入れることを選択する必要がありK >= 1
、負でない整数を見つけるA
とB
、その結果ホールド以下の2つの条件のうち少なくとも1:
K = 2^A + 2^B
K = 2^A - 2^B
そこに、このような存在しない場合A
やB
、あなたのプログラムは、任意の方法で動作をする場合があります。(明確にするために、A
およびB
同等であってもよいです。)
テストケース
多くの場合、複数の解決策がありますが、ここにいくつか例を示します。
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
最後のテストケースは17179867136
、比較的新しいマシンで10秒未満で実行する必要があります。これはコードゴルフであるため、バイト単位の最短プログラムが勝ちます。完全なプログラムまたは機能を使用できます。
16
、両方5,4
と3,3
有効です。
A
にB
なることができますか?(例:-1, -1
1)