这里给出是边长为a的立方体,其内接的锥体这反过来题直圆柱体。任务是找到这个圆柱体的最大可能体积。
例子:
Input: a = 5
Output: 232.593
Input: a = 8
Output: 952.699
方法:
从图中可以很清楚地看出,圆锥的高度, H=a ,圆锥的半径, R=a√2 ,请参考可在立方体内内切的最大圆锥。
并且,圆柱的半径r = 2R/3和圆柱的高度h = 2H/3 ,请参阅可内接在圆锥内的最大直圆柱。
因此,圆柱体相对于立方体的半径r = 2a√2/3和圆柱体相对于立方体的高度h = 2a/3 。
因此,圆柱体的体积V = 16πa^3/27 。
下面是上述方法的实现:
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
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
Javascript
输出:
232.593
如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程和学生竞争性编程现场课程。