Dados dos números enteros x e y. Compare e imprima cuál de ellos tiene más ceros a la izquierda usando la operación Bitwise. Si tanto el no. tener el mismo nro. de ceros iniciales, escriba «Igual».
Nota:- Un cero inicial es cualquier dígito 0 que viene antes del primer dígito distinto de cero en la notación binaria del número.
Ejemplos:
Input : 10, 16 Output :10 Explanation: If we represent the no.s using 8 bit only then Binary(10) = 00001010 Binary(16) = 00010000 Clearly, 10 has 4 leading zeros and 16 has 3 leading zeros Input : 10, 12 Output : Equal Binary(10) = 00001010 Binary(12) = 00001100 Both have equal no. of leading zeros.
Solución 1 : el enfoque Naive es encontrar primero la representación binaria de los números y luego contar el no. de ceros iniciales.
Solución 2: encuentre la mayor potencia de dos más pequeña que los números dados y compare estas potencias de dos para decidir la respuesta.
Solución 3: un enfoque eficiente es utilizar operadores AND y XOR bit a bit.
Caso 1: Si ambos tienen el mismo no. de ceros a la izquierda entonces (x^y) <= (x & y) porque el mismo número de ceros a la izquierda causaría un 1 en una posición más alta en x & y.
Caso 2: si hacemos la negación de y y hacemos AND bit a bit con x, obtenemos un uno en una posición más alta que en y cuando y tiene más números de 0 iniciales.
Caso 3: Si no, x tiene más ceros a la izquierda
C++
// CPP program to find the number with more // leading zeroes. #include <bits/stdc++.h> using namespace std; // Function to compare the no. of leading zeros void LeadingZeros(int x, int y) { // if both have same no. of leading zeros if ((x ^ y) <= (x & y)) cout << "\nEqual"; // if y has more leading zeros else if ((x & (~y)) > y) cout << y; else cout << x; } // Main Function int main() { int x = 10, y = 16; LeadingZeros(x, y); return 0; }
Java
// Java program to find the number // with more leading zeroes. class GFG { // Function to compare the no. // of leading zeros static void LeadingZeros(int x, int y) { // if both have same no. of // leading zeros if ((x ^ y) <= (x & y)) System.out.print("\nEqual"); // if y has more leading zeros else if ((x & (~y)) > y) System.out.print(y); else System.out.print(x); } // Driver Code public static void main (String[] args) { int x = 10, y = 16; LeadingZeros(x, y); } } // This code is contributed by Smitha
Python3
# Python 3 program to find the number # with more leading zeroes. # Function to compare the no. of # leading zeros def LeadingZeros(x, y): # if both have same no. of # leading zeros if ((x ^ y) <= (x & y)): print("Equal") # if y has more leading zeros elif ((x & (~y)) > y) : print(y) else: print(x) # Driver Code if __name__ == '__main__': x = 10 y = 16 LeadingZeros(x, y) # This code is contributed # by Surendra_Gangwar
C#
// C# program to find the number // with more leading zeroes. using System; class GFG { // Function to compare the no. // of leading zeros static void LeadingZeros(int x, int y) { // if both have same no. of // leading zeros if ((x ^ y) <= (x & y)) Console.WriteLine("\nEqual"); // if y has more leading zeros else if ((x & (~y)) > y) Console.WriteLine(y); else Console.WriteLine(x); } // Driver Code static public void Main () { int x = 10, y = 16; LeadingZeros(x, y); } } // This code is contributed by ajit
PHP
<?php // PHP program to find the number // with more leading zeroes. // Function to compare the no. // of leading zeros function LeadingZeros($x, $y) { // if both have same no. of // leading zeros if (($x ^ $y) <= ($x & $y)) echo "\nEqual"; // if y has more leading zeros else if (($x & (~$y)) > $y) echo $y; else echo $x; } // Driver Code $x = 10; $y = 16; LeadingZeros($x, $y); // This code is contributed by ajit ?>
Javascript
<script> // Javascript program to find the number with more // leading zeroes. // Function to compare the no. of leading zeros function LeadingZeros(x, y) { // if both have same no. of leading zeros if ((x ^ y) <= (x & y)) document.write("<br>Equal"); // if y has more leading zeros else if ((x & (~y)) > y) document.write(y); else document.write(x); } // Main Function let x = 10, y = 16; LeadingZeros(x, y); </script>
10
Complejidad de tiempo: O(1)
Complejidad de espacio: O(1)
Publicación traducida automáticamente
Artículo escrito por Shubham__Ranjan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA