整数与えられた場合、を反転して正方数に変換する必要がある最小ビット数を見つける必要があります。最上位ビットより下のビットのみを反転できます。N
例
- 2 2 0すでに平方数()であるため、期待される出力はです。
- 11000 → 1100 1 25 = 5 2 1は、1ビットを反転することにより2進数に変換できます:()。したがって、期待される出力はです。
- 23 20 18 30 10110 → 10 0 0 0 16 = 4 2 2単一のビットを反転させ平方数に変えることができない(可能な結果がある、、及び)が、2ビット反転させることによって行うことができる:()。したがって、期待される出力はです。
ルール
- コードが遅すぎるか、より大きなテストケースに対してエラーをスローする場合は問題ありませんが、少なくとも1分未満でサポートする必要があります。
- これはコードゴルフです!
テストケース
Input | Output
----------+--------
4 | 0
22 | 2
24 | 1
30 | 3
94 | 4
831 | 5
832 | 1
1055 | 4
6495 | 6
9999 | 4
40063 | 6
247614 | 7 (smallest N for which the answer is 7)
1049310 | 7 (clear them all!)
7361278 | 8 (smallest N for which the answer is 8)
100048606 | 8 (a bigger "8")
または、コピー/貼り付けに適した形式で:
[4,22,24,30,94,831,832,1055,6495,9999,40063,247614,1049310,7361278,100048606]
100048606
TIOで実行されません、それは問題ですか?