Dado un entero positivo n . El problema es verificar si solo el primer y el último bit están establecidos en la representación binaria de n .
Ejemplos:
Input : 9 Output : Yes (9)10 = (1001)2, only the first and last bits are set. Input : 15 Output : No (15)10 = (1111)2, except first and last there are other bits also which are set.
Enfoque: Los siguientes son los pasos:
- Si n == 1, devuelva «Sí».
- De lo contrario, compruebe si n-1 es una potencia de 2. Consulte esta publicación.
C++
// C++ to check whether the number has only // first and last bits set #include <bits/stdc++.h> using namespace std; // function to check whether 'n' // is a power of 2 or not bool powerOfTwo(unsigned int n) { return (!(n & n-1)); } // function to check whether the number has only // first and last bits set bool onlyFirstAndLastAreSet(unsigned int n) { if (n == 1) return true; if (n == 2) return false; return powerOfTwo(n-1); } // Driver program to test above int main() { unsigned int n = 9; if (onlyFirstAndLastAreSet(n)) cout << "Yes"; else cout << "No"; return 0; }
Java
// Java program to check whether the // number has only first and last // bits set import java.util.*; class GFG { // function to check whether 'n' // is a power of 2 or not static boolean powerOfTwo(int n) { return ((n & n - 1) == 0); } // function to check whether the number has // only first and last bits set static boolean onlyFirstAndLastAreSet(int n) { if (n == 1) return true; return powerOfTwo(n-1); } // Driver program to test above public static void main (String[] args) { int n = Integer.parseUnsignedInt("9"); if (onlyFirstAndLastAreSet(n)) System.out.println("Yes"); else System.out.println("No"); } } /* This code is contributed by Mr. Somesh Awasthi */
Python3
# Python3 program to check whether number # has only first and last bits set # function to check whether 'n' # is a power of 2 or not def powerOfTwo (n): return (not(n & n-1)) # function to check whether number # has only first and last bits set def onlyFirstAndLastAreSet (n): if (n == 1): return True return powerOfTwo (n-1) # Driver program to test above n = 9 if (onlyFirstAndLastAreSet (n)): print('Yes') else: print('No') # This code is contributed by Shariq Raza
C#
// C# program to check whether the // number has only first and last // bits set using System; class GFG { // function to check whether 'n' // is a power of 2 or not static bool powerOfTwo(uint n) { return ((n & n - 1) == 0); } // function to check whether the number has // only first and last bits set static bool onlyFirstAndLastAreSet(uint n) { if (n == 1) return true; return powerOfTwo(n - 1); } // Driver program to test above public static void Main() { uint n = (uint)9; if (onlyFirstAndLastAreSet(n)) Console.WriteLine("Yes"); else Console.WriteLine("No"); } } // This code is contributed by Sam007
PHP
<?php // PHP to check whether the number // has only first and last bits set // function to check whether 'n' // is a power of 2 or not function powerOfTwo($n) { return (!($n & $n - 1)); } // function to check whether // the number has only first // and last bits set function onlyFirstAndLastAreSet($n) { if ($n == 1) return true; if ($n == 2) return false; return powerOfTwo($n - 1); } // Driver Code $n = 9; if (onlyFirstAndLastAreSet($n)) echo "Yes"; else echo "No"; // This code is contributed // by Sach_Code ?>
Javascript
<script> // Javascript to check whether the number has only // first and last bits set // function to check whether 'n' // is a power of 2 or not function powerOfTwo(n) { return (!(n & n-1)); } // function to check whether the number has only // first and last bits set function onlyFirstAndLastAreSet(n) { if (n == 1) return true; if (n == 2) return false; return powerOfTwo(n-1); } // Driver program to test above var n = 9; if (onlyFirstAndLastAreSet(n)) document.write("Yes"); else document.write("No"); </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