Smallest perfect power of 2 greater than n (without using arithmetic operators)
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++
#include <bits/stdc++.h>
using namespace std;
unsigned int perfectPowerOf2(unsigned int n)
{
unsigned int per_pow = 1;
while (n > 0)
{
per_pow = per_pow << 1;
n = n >> 1;
}
return per_pow;
}
int main()
{
unsigned int n = 128;
cout << "Perfect power of 2 greater than "
<< n << ": " << perfectPowerOf2(n);
return 0;
}
|
Java
import java.util.*;
class GFG {
static int perfectPowerOf2( int n)
{
int per_pow = 1 ;
while (n > 0 )
{
per_pow = per_pow << 1 ;
n = n >> 1 ;
}
return per_pow;
}
public static void main(String[] args)
{
int n = 12 ;
System.out.println( "Perfect power of 2 greater than "
+ n + ": " + perfectPowerOf2(n));
}
}
|
Python3
def perfectPowerOf2( n ):
per_pow = 1
while n > 0 :
per_pow = per_pow << 1
n = n >> 1
return per_pow
n = 128
print ( "Perfect power of 2 greater than" ,
n, ":" ,perfectPowerOf2(n))
|
C#
using System;
class GFG {
static int perfectPowerOf2( int n)
{
int per_pow = 1;
while (n > 0)
{
per_pow = per_pow << 1;
n = n >> 1;
}
return per_pow;
}
public static void Main()
{
int n = 128;
Console.WriteLine( "Perfect power of 2 greater than " +
n + ": " + perfectPowerOf2(n));
}
}
|
PHP
<?php
function perfectPowerOf2( $n )
{
$per_pow = 1;
while ( $n > 0)
{
$per_pow = $per_pow << 1;
$n = $n >> 1;
}
return $per_pow ;
}
$n = 128;
echo "Perfect power of 2 greater than " .
$n . ": " .perfectPowerOf2( $n );
?>
|
Javascript
<script>
function perfectPowerOf2(n)
{
let per_pow = 1;
while (n > 0)
{
per_pow = per_pow << 1;
n = n >> 1;
}
return per_pow;
}
let n = 128;
document.write( "Perfect power of 2 greater than "
+ n + ": " + perfectPowerOf2(n));
</script>
|
Output:
Perfect power of 2 greater than 128: 256
Time Complexity: O(logn)
Auxiliary Space: O(1)
Last Updated :
15 Jun, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...