Dado un número entero N , la tarea es encontrar el número de ceros finales en la representación binaria del número dado.
Ejemplos:
Entrada: N = 12
Salida: 2
Explicación:
La representación binaria del número 13 es “1100”.
Por lo tanto, hay dos ceros finales en el 12.Entrada: N = -56
Salida: 3
Explicación:
La representación binaria del número -56 es “001000”.
Por lo tanto, hay 3 ceros finales presentes en -56.
Enfoque: Siga los pasos para resolver el problema
- La idea es usar la observación de que después de calcular XOR de N con N – 1 , todo el bit establecido de N se fue hacia el bit establecido más a la derecha, es decir, el bit establecido LSB desaparece y el bit establecido más a la derecha de N se convierte en el bit establecido más a la izquierda de N. ^ (N-1) .
- Imprime el conteo de bits de un número (N ^ (N – 1)) decrementado en 1 .
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation // of the above approach #include <bits/stdc++.h> using namespace std; // Function to print count of // trailing zeroes present in // binary representation of N int countTrailingZeroes(int N) { // Count set bits in (N ^ (N - 1)) int res = log2(N ^ (N - 1)); // If res < 0, return 0 return res >= 0 ? res : 0; } // Driver Code int main() { int N = 12; // Function call to print the count // of trailing zeroes in the binary // representation of N cout << countTrailingZeroes(N); return 0; }
Java
// Java implementation // of the above approach import java.io.*; class GFG { // Function to print count of // trailing zeroes present in // binary representation of N public static int countTrailingZeroes(int N) { // Stores XOR of N and (N-1) int res = N ^ (N - 1); // Return count of set bits in res return (int)(Math.log(temp) / Math.log(2)); } // Driver Code public static void main(String[] args) { int N = 12; // Function call to print the count // of trailing zeroes in the binary // representation of N System.out.println( countTrailingZeroes(N)); } }
Python3
# Python3 implementation # of the above approach from math import log2 # Function to print count of # trailing zeroes present in # binary representation of N def countTrailingZeroes(N): # Count set bits in (N ^ (N - 1)) res = int(log2(N ^ (N - 1))) # If res < 0, return 0 return res if res >= 0 else 0 # Driver Code if __name__ == '__main__': N = 12 # Function call to print the count # of trailing zeroes in the binary # representation of N print (countTrailingZeroes(N)) # This code is contributed by mohit kumar 29.
C#
// C# implementation // of the above approach using System; public class GFG{ // Function to print count of // trailing zeroes present in // binary representation of N public static int countTrailingZeroes(int N) { // Stores XOR of N and (N-1) int res = (int)Math.Log(N ^ (N - 1), 2.0); // Return count of set bits in res if(res >= 0) return res; else return 0; } // Driver Code static public void Main () { int N = 12; // Function call to print the count // of trailing zeroes in the binary // representation of N Console.WriteLine( countTrailingZeroes(N)); } } // This code is contributed by Dharanendra L V.
Javascript
<script> // Javascript implementation // of the above approach // Function to print count of // trailing zeroes present in // binary representation of N function countTrailingZeroes(N) { // Count set bits in (N ^ (N - 1)) let res = parseInt(Math.log(N ^ (N - 1)) / Math.log(2)); // If res < 0, return 0 return res >= 0 ? res : 0; } // Driver Code let N = 12; // Function call to print the count // of trailing zeroes in the binary // representation of N document.write(countTrailingZeroes(N)); // This code is contributed by souravmahato348 </script>
Producción:
2
Complejidad de tiempo: O(log(N))
Espacio auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por omkarphansopkar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA