Étant donné un entier , vous devez trouver le nombre minimum de bits qui doivent être inversés dans N pour le transformer en nombre carré . Vous êtes uniquement autorisé à inverser les bits en dessous du plus significatif .
Exemples
- est déjà un nombre carré ( 2 2 ), donc la sortie attendue est 0 .
- peut être transformé en nombre carré en inversant 1 bit: 11000 → 1100 1 ( 25 = 5 2 ), donc la sortie attendue est 1 .
- ne peut pas être transformé en nombre carré en inversant un seul bit (les résultats possibles étant 23 , 20 , 18 et 30 ) mais cela peut être fait en inversant 2 bits: 10110 → 10 0 0 0 ( 16 = 4 2 ) , donc la sortie attendue est 2 .
Règles
- C'est bien si votre code est trop lent ou génère une erreur pour les plus grands cas de test, mais il devrait au moins prendre en charge en moins d'une minute.
- C'est du code-golf !
Cas de test
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")
Ou au format convivial copier / coller:
[4,22,24,30,94,831,832,1055,6495,9999,40063,247614,1049310,7361278,100048606]
100048606
sur TIO, est-ce un problème?