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++
// 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
// 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
# 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#
// 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 // 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.. ?> |
Javascript
<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)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!