Dado un número entero , debe encontrar el número mínimo de bits que deben invertirse en para convertirlo en un número cuadrado . Solo puede invertir bits por debajo del más significativo .
Ejemplos
- ya es un número cuadrado ( ), por lo que la salida esperada es .
- se puede convertir en un número cuadrado invirtiendo 1 bit: ( ), por lo que la salida esperada es .
- no se puede convertir en un número cuadrado invirtiendo un solo bit (los posibles resultados son , , y ) pero se puede hacer invirtiendo 2 bits: ( ), por lo que la salida esperada es .
Reglas
- Está bien si su código es demasiado lento o arroja un error para los casos de prueba más grandes, pero al menos debería admitir en menos de 1 minuto.
- Este es el código de golf !
Casos de prueba
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")
O en formato amigable copiar / pegar:
[4,22,24,30,94,831,832,1055,6495,9999,40063,247614,1049310,7361278,100048606]
100048606
en TIO, ¿es eso un problema?