这里给出是边长为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