Given here is a frustum of height h, top-radius r & base-radius R, which inscribes a right circular cylinder which in turn inscribes a sphere . The task is to find the largest possible volume of this sphere.
Examples:
Input: r = 5, R = 8, h = 11
Output: 523.333Input: r = 9, R = 14, h = 20
Output:3052.08
Approach: Let the height of the cylinder = H, radius of the sphere = x
We know, the height and radius of the cylinder inscribed within the frustum is equal to the height and top-radius of the frustum respectively(Please refer here).So the height of the cylinder = h, radius of the cylinder = r.
Also, radius of the sphere inscribed within a cylinder is equal to radius of the cylinder(Please refer here), so x = r.
So, volume of the sphere, V = 4*?*r^3/3.
Below is the implementation of the above approach:
// C++ Program to find the biggest sphere // that can be inscribed within a right // circular cylinder which in turn is inscribed // within a frustum #include <bits/stdc++.h> using namespace std;
// Function to find the biggest sphere float sph( float r, float R, float h)
{ // the radii and height cannot be negative
if (r < 0 && R < 0 && h < 0)
return -1;
// radius of the sphere
float x = r;
// volume of the sphere
float V = (4 * 3.14 * pow (r, 3)) / 3;
return V;
} // Driver code int main()
{ float r = 5, R = 8, h = 11;
cout << sph(r, R, h) << endl;
return 0;
} |
// Java Program to find the biggest sphere // that can be inscribed within a right // circular cylinder which in turn is inscribed // within a frustum import java.lang.Math;
class gfg
{ // Function to find the biggest sphere static float sph( float r, float R, float h)
{ // the radii and height cannot be negative
if (r < 0 && R < 0 && h < 0 )
return - 1 ;
// radius of the sphere
float x = r;
// volume of the sphere
float V = ( float )( 4 * 3 .14f * Math.pow(r, 3 )) / 3 ;
return V;
} // Driver code public static void main(String[] args)
{ float r = 5 , R = 8 , h = 11 ;
System.out.println(sph(r, R, h));
} } // This Code is contributed by Code_Mech. |
# Python3 Program to find the biggest sphere # that can be inscribed within a right # circular cylinder which in turn is inscribed # within a frustum import math as mt
# Function to find the biggest sphere def sph(r, R, h):
# the radii and height cannot
# be negative
if (r < 0 and R < 0 and h < 0 ):
return - 1
# radius of the sphere
x = r
# volume of the sphere
V = ( 4 * 3.14 * pow (r, 3 )) / 3
return V
# Driver code r, R, h = 5 , 8 , 11
print (sph(r, R, h))
# This code is contributed by # Mohit kumar 29 |
// C# Program to find the biggest sphere // that can be inscribed within a right // circular cylinder which in turn is // inscribed within a frustum using System;
class gfg
{ // Function to find the biggest sphere
static float sph( float r, float R, float h)
{
// the radii and height
// cannot be negative
if (r < 0 && R < 0 && h < 0)
return -1;
// radius of the sphere
float x = r;
// volume of the sphere
float V = ( float )(4 * 3.14f *
Math.Pow(r, 3)) / 3;
return V;
}
// Driver code
public static void Main()
{
float r = 5, R = 8, h = 11;
Console.WriteLine(sph(r, R, h));
}
} // This code is contributed by Ryuga |
<?php // PHP Program to find the biggest sphere // that can be inscribed within a right // circular cylinder which in turn is // inscribed within a frustum Function // to find the biggest sphere function sph( $r , $R , $h )
{ // the radii and height
// cannot be negative
if ( $r < 0 && $R < 0 && $h < 0)
return -1;
// radius of the sphere
$x = $r ;
// volume of the sphere
$V = (4 * 3.14 * pow( $r , 3)) / 3;
return $V ;
} // Driver code $r = 5;
$R = 8;
$h = 11;
echo sph( $r , $R , $h );
#This Code is contributed by ajit.. ?> |
<script> // javascript Program to find the biggest sphere // that can be inscribed within a right // circular cylinder which in turn is inscribed // within a frustum // Function to find the biggest sphere function sph(r , R , h)
{ // the radii and height cannot be negative
if (r < 0 && R < 0 && h < 0)
return -1;
// radius of the sphere
var x = r;
// volume of the sphere
var V = ((4 * 3.14 * Math.pow(r, 3)) / 3);
return V;
} // Driver code var r = 5, R = 8, h = 11;
document.write(sph(r, R, h).toFixed(5)); // This code is contributed by Amit Katiyar </script> |
523.333
Time Complexity: O(1)
Auxiliary Space: O(1)