给定一个半径为r且垂直高度为h的正圆锥。我们必须找到可以内接的最大立方体的边长。
例子:
Input : h = 5, r = 6
Output : 3.14613
Input : h = 8, r = 12
Output : 5.43698
方法:
让,立方体的边 = a 。
从图中我们可以清楚地理解使用三角形的性质: BC/AB = DE/AD。
所以,
r/h = (a/√2)/(h-a)
or, a = h*r√2/(h+√2*r)
下面是上述方法的实现:
C++
// C++ Program to find the biggest cube
// inscribed within a right circular cone
#include
using namespace std;
// Function to find the side of the cube
float cubeSide(float h, float r)
{
// height and radius cannot be negative
if (h < 0 && r < 0)
return -1;
// side of the cube
float a = (h * r * sqrt(2)) / (h + sqrt(2) * r);
return a;
}
// Driver code
int main()
{
float h = 5, r = 6;
cout << cubeSide(h, r) << endl;
return 0;
}
Java
// Java Program to find the the biggest cube
// which can be inscribed within a right circular cone
import java.io.*;
class GFG {
// Function to find the side of the cube
static float cube(float h, float r)
{
// hegiht and radius cannot be negative
if (h < 0 && r < 0)
return -1;
// side of the cube
float a = (h * r * (float)Math.sqrt(2)) / (h + (float)Math.sqrt(2) * r);
return a;
}
// Driver code
public static void main (String[] args) {
float h = 5, r = 6;
System.out.println( cube(h, r));
}
}
// this article is contributed by Ishwar Gupta
Python 3
# Python3 Program to find the biggest cube
# inscribed within a right circular cone
import math
# Function to find the side of the cube
def cubeSide(h, r):
# height and radius cannot
# be negative
if (h < 0 and r < 0):
return -1
# side of the cube
a = ((h * r * math.sqrt(2)) /
(h + math.sqrt(2) * r))
return a
# Driver code
h = 5; r = 6;
print(cubeSide(h, r), "\n")
# This code is contributed
# by Akanksha Rai
C#
// C# Program to find the the
// biggest cube which can be
// inscribed within a right
// circular cone
using System;
class GFG
{
// Function to find the side
// of the cube
static float cube(float h, float r)
{
// hegiht and radius cannot be negative
if (h < 0 && r < 0)
return -1;
// side of the cube
float a = (h * r * (float)Math.Sqrt(2)) /
(h + (float)Math.Sqrt(2) * r);
return a;
}
// Driver code
public static void Main ()
{
float h = 5, r = 6;
Console.Write( cube(h, r));
}
}
// This code is contributed
// by 29AjayKumar
PHP
Javascript
输出:
3.14613
如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程和学生竞争性编程现场课程。