Dado un número no negativo n y dos valores l y r . El problema es verificar si todos los bits están establecidos o no en el rango de l a r en la representación binaria de n .
Restricción: 1 <= l <= r <= número de bits en la representación binaria de n .
Ejemplos:
Input : n = 22, l = 2, r = 3 Output : Yes (22)10 = (10110)2 The bits in the range 2 to 3 are all set. Input : n = 47, l = 2, r = 5 Output : No (47)10 = (101111)2 The bits in the range 2 to 5 are all not set.
Enfoque: Los siguientes son los pasos:
- Calcular num = ((1 << r) – 1) ^ ((1 << (l-1)) – 1). Esto producirá un número num que tiene un número r de bits y los bits en el rango de l a r son los únicos bits establecidos.
- Calcula new_num = n & num.
- Si num == new_num, devuelve «Sí» (todos los bits se establecen en el rango dado).
- De lo contrario, devuelve «No» (no todos los bits están establecidos en el rango dado).
C++
// C++ implementation to check whether all the bits // are set in the given range or not #include <bits/stdc++.h> using namespace std; // function to check whether all the bits // are set in the given range or not string allBitsSetInTheGivenRange(unsigned int n, unsigned int l, unsigned int r) { // calculating a number 'num' having 'r' // number of bits and bits in the range l // to r are the only set bits int num = ((1 << r) - 1) ^ ((1 << (l - 1)) - 1); // new number which will only have one or more // set bits in the range l to r and nowhere else int new_num = n & num; // if both are equal, then all bits are set // in the given range if (num == new_num) return "Yes"; // else all bits are not set return "No"; } // Driver program to test above int main() { unsigned int n = 22; unsigned int l = 2, r = 3; cout << allBitsSetInTheGivenRange(n, l, r); return 0; }
Java
// Java implementation to check whether all // the bits are set in the given range or not class GFG { // function to check whether all the bits // are set in the given range or not static String allBitsSetInTheGivenRange(int n, int l,int r) { // calculating a number 'num' having 'r' // number of bits and bits in the range // l to r are the only set bits int num = ((1 << r) - 1) ^ ((1 << (l - 1)) - 1); // new number which will only have one // or more set bits in the range l to r // and nowhere else int new_num = n & num; // if both are equal, then all bits are // set in the given range if (num == new_num) return "Yes"; // else all bits are not set return "No"; } //Driver code public static void main (String[] args) { int n = 22; int l = 2, r = 3; System.out.print(allBitsSetInTheGivenRange( n, l, r)); } } // This code is contributed by Anant Agarwal.
Python3
# Python3 implementation to check # whether all the bits are set in # the given range or not # Function to check whether all the bits # are set in the given range or not def allBitsSetInTheGivenRange(n, l, r): # calculating a number 'num' having 'r' # number of bits and bits in the range l # to r are the only set bits num = ((1 << r) - 1) ^ ((1 << (l - 1)) - 1) # new number which will only have # one or more set bits in the range # l to r and nowhere else new_num = n & num # if both are equal, then all bits # are set in the given range if (num == new_num): return "Yes" # else all bits are not set return "No" # Driver code n, l, r = 22, 2, 3 print(allBitsSetInTheGivenRange(n, l, r)) # This code is contributed by Anant Agarwal.
C#
// C# implementation to check whether all the bits // are set in the given range or not using System; class GFG { // function to check whether all the bits // are set in the given range or not static String allBitsSetInTheGivenRange(int n, int l,int r) { // calculating a number 'num' having 'r' // number of bits and bits in the range l // to r are the only set bits int num = ((1 << r) - 1) ^ ((1 << (l - 1)) - 1); // new number which will only have one or more // set bits in the range l to r and nowhere else int new_num = n & num; // if both are equal, then all bits are set // in the given range if (num == new_num) return "Yes"; // else all bits are not set return "No"; } //Driver code public static void Main () { int n = 22; int l = 2, r = 3; Console.Write(allBitsSetInTheGivenRange(n, l, r)); } } // This code is contributed by Anant Agarwal.
PHP
<?php // PHP implementation to check // whether all the bits are set // in the given range or not // function to check whether // all the bits are set in // the given range or not function allBitsSetInTheGivenRange($n, $l, $r) { // Calculating a number // 'num' having 'r' // number of bits and // bits in the range l // to r are the only // set bits $num = ((1 << $r) - 1) ^ ((1 << ($l - 1)) - 1); // new number which will // only have one or more // set bits in the range // l to r and nowhere else $new_num = $n & $num; // if both are equal, // then all bits are set // in the given range if ($num == $new_num) return "Yes"; // else all bits // are not set return "No"; } // Driver Code $n = 22; $l = 2; $r = 3; echo allBitsSetInTheGivenRange($n, $l, $r); // This code is contributed by Ajit ?>
Javascript
<script> // javascript implementation to check whether all // the bits are set in the given range or not // function to check whether all the bits // are set in the given range or not function allBitsSetInTheGivenRange(n,l,r) { // calculating a number 'num' having 'r' // number of bits and bits in the range // l to r are the only set bits var num = ((1 << r) - 1) ^ ((1 << (l - 1)) - 1); // new number which will only have one // or more set bits in the range l to r // and nowhere else var new_num = n & num; // if both are equal, then all bits are // set in the given range if (num == new_num) return "Yes"; // else all bits are not set return "No"; } // Driver code var n = 22; var l = 2, r = 3; document.write(allBitsSetInTheGivenRange( n, l, r)); // This code contributed by Princi Singh </script>
Producción:
Yes
Complejidad del tiempo – O(1)
Complejidad espacial – O(1)
Este artículo es una contribución de Ayush Jauhari . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA