Given a number, print floor of 5’th root of the number.
Examples:
Input : n = 32
Output : 2
2 raise to power 5 is 32
Input : n = 250
Output : 3
Fifth square root of 250 is between 3 and 4
So floor value is 3.
Method 1 (Simple)
A simple solution is initialize result as 0, keep incrementing result while result5 is smaller than or equal to n. Finally return result – 1.
C++14
#include<bits/stdc++.h>
using namespace std;
int floorRoot5( int n)
{
if (n == 0 || n == 1)
return n;
int res = 0;
while (res*res*res*res*res <= n)
res++;
return res-1;
}
int main()
{
int n = 250;
cout << "Floor of 5'th root is "
<< floorRoot5(n);
return 0;
}
|
Java
class GFG {
static int floorRoot5( int n)
{
if (n == 0 || n == 1 )
return n;
int res = 0 ;
while (res * res * res * res * res <= n)
res++;
return res- 1 ;
}
public static void main(String []args)
{
int n = 250 ;
System.out.println( "Floor of 5'th root is "
+ floorRoot5(n));
}
}
|
Python3
def floorRoot5(n):
if n = = 0 and n = = 1 :
return n
res = 0
while res * res * res * res * res < = n:
res + = 1
return res - 1
if __name__ = = "__main__" :
n = 250
print ( "Floor of 5'th root is" ,
floorRoot5(n))
|
C#
using System;
class GFG {
static int floorRoot5( int n)
{
if (n == 0 || n == 1)
return n;
int res = 0;
while (res * res * res * res * res <= n)
res++;
return res-1;
}
public static void Main()
{
int n = 250;
Console.Write( "Floor of 5'th root is "
+ floorRoot5(n));
}
}
|
PHP
<?php
function floorRoot5( $n )
{
if ( $n == 0 || $n == 1)
return $n ;
$res = 0;
while ( $res * $res * $res *
$res * $res <= $n )
$res ++;
return $res - 1;
}
$n = 250;
echo "Floor of 5'th root is "
, floorRoot5( $n );
?>
|
Javascript
<script>
function floorRoot5(n)
{
if (n == 0 || n == 1)
return n;
let res = 0;
while (res * res * res * res * res <= n)
res++;
return res-1;
}
let n = 250;
document.write( "Floor of 5'th root is "
+ floorRoot5(n));
</script>
|
Output:
Floor of 5'th root is 3
Time complexity: O(n1/5)
Auxiliary Space: O(1)
We can do better. See below solution.
Method 2 (Binary Search)
The idea is to do Binary Search. We start from n/2 and if its 5’th power is more than n, we recur for interval from n/2+1 to n. Else if power is less, we recur for interval 0 to n/2-1
C++
#include<bits/stdc++.h>
using namespace std;
int floorRoot5( int n)
{
if (n == 0 || n == 1)
return n;
int low = 1, high = n, ans = 0;
while (low <= high)
{
int mid = (low + high) / 2;
long int mid5 = mid*mid*mid*mid*mid;
if (mid5 == n)
return mid;
if (mid5 < n)
{
low = mid + 1;
ans = mid;
}
else
high = mid - 1;
}
return ans;
}
int main()
{
int n = 250;
cout << "Floor of 5'th root is "
<< floorRoot5(n);
return 0;
}
|
Java
class GFG {
static int floorRoot5( int n)
{
if (n == 0 || n == 1 )
return n;
int low = 1 , high = n, ans = 0 ;
while (low <= high)
{
int mid = (low + high) / 2 ;
long mid5 = mid * mid * mid *
mid * mid;
if (mid5 == n)
return mid;
if (mid5 < n)
{
low = mid + 1 ;
ans = mid;
}
else
high = mid - 1 ;
}
return ans;
}
public static void main(String []args)
{
int n = 250 ;
System.out.println( "Floor of 5'th root is " +
floorRoot5(n));
}
}
|
Python3
def floorRoot5(n):
if n = = 0 or n = = 1 :
return n
low, high, ans = 1 , n, 0
while low < = high:
mid = (low + high) / / 2
mid5 = mid * mid * mid * mid * mid
if mid5 = = n:
return mid
if mid5 < n:
low = mid + 1
ans = mid
else :
high = mid - 1
return ans
if __name__ = = "__main__" :
n = 250
print ( "Floor of 5'th root is" , floorRoot5(n))
|
C#
using System;
class GFG {
static int floorRoot5( int n)
{
if (n == 0 || n == 1)
return n;
int low = 1, high = n, ans = 0;
while (low <= high)
{
int mid = (low + high) / 2;
long mid5 = mid * mid * mid *
mid * mid;
if (mid5 == n)
return mid;
if (mid5 < n)
{
low = mid + 1;
ans = mid;
}
else
high = mid - 1;
}
return ans;
}
public static void Main(String []args)
{
int n = 250;
Console.WriteLine( "Floor of 5'th root is " +
floorRoot5(n));
}
}
|
PHP
<?php
function floorRoot5( $n )
{
if ( $n == 0 || $n == 1)
return $n ;
$low = 1;
$high = $n ;
$ans = 0;
while ( $low <= $high )
{
$mid = (int)(( $low + $high ) / 2);
$mid5 = $mid * $mid * $mid * $mid * $mid ;
if ( $mid5 == $n )
return $mid ;
if ( $mid5 < $n )
{
$low = $mid + 1;
$ans = $mid ;
}
else
$high = $mid - 1;
}
return $ans ;
}
$n = 250;
echo "Floor of 5'th root is " .floorRoot5( $n );
?>
|
Javascript
<script>
function floorRoot5(n)
{
if (n == 0 || n == 1)
return n;
var low = 1, high = n, ans = 0;
while (low <= high)
{
var mid = parseInt((low + high) / 2);
var mid5 = mid * mid * mid *
mid * mid;
if (mid5 == n)
return mid;
if (mid5 < n)
{
low = mid + 1;
ans = mid;
}
else
high = mid - 1;
}
return ans;
}
var n = 250;
document.write( "Floor of 5'th root is " +
floorRoot5(n));
</script>
|
Output:
Floor of 5'th root is 3
Time Complexity: O(logN)
Auxiliary Space: O(1)
We can also use Newton Raphson Method to find exact root. See this for implementation.
Source : http://qa.geeksforgeeks.org/7487/program-calculate-fifth-without-using-mathematical-operators
Last Updated :
19 Dec, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...