Given a non-negative integer n. The problem is to find the smallest perfect power of 2 which is greater than n without using the arithmetic operators.
Examples :
Input : n = 10 Output : 16 Input : n = 128 Output : 256
Algorithm :
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> |
Output:
Perfect power of 2 greater than 128: 256
Time Complexity: O(logn)
Auxiliary Space: O(1)