Given here is a cube of side length a, which inscribes a cone which in turn inscribes a right circular cylinder. The task is to find the largest possible volume of this cylinder.
Examples:
Input: a = 5 Output: 232.593 Input: a = 8 Output: 952.699
Approach:
From the figure, it is very clear, height of cone, H = a and radius of the cone, R = a?2, please refer Largest cone that can be inscribed within a cube.
and, radius of the cylinder, r = 2R/3 and height of the cylinder, h = 2H/3, please refer Largest right circular cylinder that can be inscribed within a cone.
So, radius of cylinder with respect to cube, r = 2a?2/3 and height of cylinder with respect to cube, h = 2a/3.
So, volume of the cylinder, V = 16?a^3/27.
Below is the implementation of the above approach:
C++
// C++ Program to find the biggest right circular // cylinder that can be inscribed within a right // circular cone which in turn is inscribed // within a cube #include <bits/stdc++.h> using namespace std; // Function to find the biggest // right circular cylinder float cyl( float a) { // side cannot be negative if (a < 0) return -1; // radius of right circular cylinder float r = (2 * a * sqrt (2)) / 3; // height of right circular cylinder float h = (2 * a) / 3; // volume of right circular cylinder float V = 3.14 * pow (r, 2) * h; return V; } // Driver code int main() { float a = 5; cout << cyl(a) << endl; return 0; } |
Java
// Java Program to find the biggest right circular // cylinder that can be inscribed within a right // circular cone which in turn is inscribed // within a cube import java.lang.Math; class cfg { // Function to find the biggest // right circular cylinder static float cyl( float a) { // side cannot be negative if (a < 0 ) return - 1 ; // radius of right circular cylinder float r = ( 2 * a *( float )(Math.sqrt ( 2 )) / 3 ); // height of right circular cylinder float h = ( 2 * a) / 3 ; // volume of right circular cylinder float V =( 3 .14f *( float )(Math.pow(r, 2 ) * h)); return V; } // Driver code public static void main(String[] args) { float a = 5 ; System.out.println(cyl(a)); } } // This code is contributed by Mukul Singh. |
Python3
# Python3 Program to find the biggest # right circular cylinder that can be # inscribed within a right circular # cone which in turn is inscribed # within a cube import math as mt # Function to find the biggest # right circular cylinder def cyl(a): # side cannot be negative if (a < 0 ): return - 1 # radius of right circular cylinder r = ( 2 * a * mt.sqrt( 2 )) / 3 # height of right circular cylinder h = ( 2 * a) / 3 # volume of right circular cylinder V = 3.14 * pow (r, 2 ) * h return V # Driver code a = 5 print (cyl(a)) # This code is contributed by # Mohit kumar 29 |
C#
// C# Program to find the biggest // right circular cylinder that can // be inscribed within a right circular // cone which in turn is inscribed // within a cube using System; class GFG { // Function to find the biggest // right circular cylinder static float cyl( float a) { // side cannot be negative if (a < 0) return -1; // radius of right circular cylinder float r = (2 * a * ( float )(Math.Sqrt (2)) / 3); // height of right circular cylinder float h = (2 * a) / 3; // volume of right circular cylinder float V =(3.14f * ( float )(Math.Pow(r, 2) * h)); return V; } // Driver code public static void Main() { float a = 5; Console.Write(cyl(a)); } } // This code is contributed by Rajput-Ji |
PHP
<?php // PHP Program to find the biggest right // circular cylinder that can be inscribed // within a right circular cone which in // turn is inscribed within a cube // Function to find the biggest // right circular cylinder function cyl( $a ) { // side cannot be negative if ( $a < 0) return -1; // radius of right circular cylinder $r = (2 * $a * sqrt(2)) / 3; // height of right circular cylinder $h = (2 * $a ) / 3; // volume of right circular cylinder $V = 3.14 * pow( $r , 2) * $h ; return $V ; } // Driver code $a = 5; echo cyl( $a ); // This code is contributed by Mahadev99 ?> |
Javascript
<script> // javascript Program to find the biggest right circular // cylinder that can be inscribed within a right // circular cone which in turn is inscribed // within a cube // Function to find the biggest // right circular cylinder function cyl(a) { // side cannot be negative if (a < 0) return -1; // radius of right circular cylinder var r = (2 * a *(Math.sqrt (2)) / 3); // height of right circular cylinder var h = (2 * a) / 3; // volume of right circular cylinder var V =(3.14 *(Math.pow(r, 2) * h)); return V; } // Driver code var a = 5; document.write(cyl(a).toFixed(5)); // This code contributed by Princi Singh </script> |
232.593
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!