З огляду на ціле число , ви повинні знайти мінімальну кількість бітів, які потрібно перевернути в N, щоб перетворити його на квадратне число . Ви можете інвертувати лише біти нижче найзначнішого .
Приклади
- - це квадратне число ( 2 2 ), тому очікуваний вихід дорівнює 0 .
- можна перетворити на квадратне число, перевернувши 1 біт: 11000 → 1100 1 ( 25 = 5 2 ), тому очікуваний вихід дорівнює 1 .
- не можна перетворити на квадратне число, перевернувши один біт (можливі результати - 23 , 20 , 18 і 30 ), але це можна зробити, перевернувши 2 біти: 10110 → 10 0 0 0 ( 16 = 4 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, це проблема?