Dado un entero no negativo n . El problema es encontrar la potencia perfecta más pequeña de 2 que sea mayor que n sin utilizar los operadores aritméticos.
Ejemplos:
Input : n = 10 Output : 16 Input : n = 128 Output : 256
Algoritmo:
C++
// C++ implementation of smallest perfect power // of 2 greater than n #include <bits/stdc++.h> using namespace std; // Function to find smallest perfect power // of 2 greater than n unsigned int perfectPowerOf2(unsigned int n) { // To store perfect power of 2 unsigned int per_pow = 1; while (n > 0) { // bitwise left shift by 1 per_pow = per_pow << 1; // bitwise right shift by 1 n = n >> 1; } // Required perfect power of 2 return per_pow; } // Driver program to test above int main() { unsigned int n = 128; cout << "Perfect power of 2 greater than " << n << ": " << perfectPowerOf2(n); return 0; }
Java
// JAVA Code for Smallest perfect // power of 2 greater than n import java.util.*; class GFG { // Function to find smallest perfect // power of 2 greater than n static int perfectPowerOf2( int n) { // To store perfect power of 2 int per_pow = 1; while (n > 0) { // bitwise left shift by 1 per_pow = per_pow << 1; n = n >> 1; } // Required perfect power of 2 return per_pow; } // Driver program public static void main(String[] args) { int n = 12; System.out.println("Perfect power of 2 greater than " + n + ": " + perfectPowerOf2(n)); } } //This code is contributed by Arnav Kr. Mandal.
Python3
# Python3 implementation of smallest # perfect power of 2 greater than n # Function to find smallest perfect # power of 2 greater than n def perfectPowerOf2( n ): # To store perfect power of 2 per_pow = 1 while n > 0: # bitwise left shift by 1 per_pow = per_pow << 1 # bitwise right shift by 1 n = n >> 1 # Required perfect power of 2 return per_pow # Driver program to test above n = 128 print("Perfect power of 2 greater than", n, ":",perfectPowerOf2(n)) # This code is contributed by "Sharad_Bhardwaj".
C#
// C# Code for Smallest perfect // power of 2 greater than n using System; class GFG { // Function to find smallest perfect // power of 2 greater than n static int perfectPowerOf2(int n) { // To store perfect power of 2 int per_pow = 1; while (n > 0) { // bitwise left shift by 1 per_pow = per_pow << 1; n = n >> 1; } // Required perfect power of 2 return per_pow; } // Driver program public static void Main() { int n = 128; Console.WriteLine("Perfect power of 2 greater than " + n + ": " + perfectPowerOf2(n)); } } // This code is contributed by Sam007
PHP
<?php // php implementation of // smallest perfect power // of 2 greater than n // Function to find smallest // perfect power of 2 // greater than n function perfectPowerOf2($n) { // To store perfect power of 2 $per_pow = 1; while ($n > 0) { // bitwise left shift by 1 $per_pow = $per_pow << 1; // bitwise right shift by 1 $n = $n >> 1; } // Required perfect power of 2 return $per_pow; } // Driver code $n = 128; echo "Perfect power of 2 greater than ". $n . ": ".perfectPowerOf2($n); // This code is contributed by mits ?>
Javascript
<script> // JavaScript implementation of smallest perfect power // of 2 greater than n // Function to find smallest perfect power // of 2 greater than n function perfectPowerOf2(n) { // To store perfect power of 2 let per_pow = 1; while (n > 0) { // bitwise left shift by 1 per_pow = per_pow << 1; // bitwise right shift by 1 n = n >> 1; } // Required perfect power of 2 return per_pow; } // Driver program to test above let n = 128; document.write("Perfect power of 2 greater than " + n + ": " + perfectPowerOf2(n)); // This code is contributed by Surbhi Tyagi. </script>
Producción:
Perfect power of 2 greater than 128: 256
Complejidad de tiempo: O(logn)
Espacio auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por ayushjauhari14 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA