给定半径范围 。任务是找到基座的半径和可以在其中刻出的最大右圆锥形的高度。
例子:
Input : R = 10
Output : r = 9.42809, h = 13.3333
Input : R = 25
Output : r = 23.5702, h = 33.3333
方法:
令圆锥的半径= r
圆锥的高度= h
从图中可以清楚地看出:
x =√(R ^ 2 – r ^ 2)和h = x + R
现在使用这些值,
To maximize the volume of the cone(V):
V = (πr2h)/3
From the diagram,
V = (πr2R)/3 + πr2√(R2 – r2)/3
Taking first derivative of V with respect to r we get,
Now, setting dV/dr = 0 we get,
Squaring both sides and solving we get,
since, h = R + √(R2 – r2)
Now calculating the second derivative we get
Thus r=(2R√2)/3 is point of maxima
So, h = 4R/3
下面是上述方法的实现:
C++
*** QuickLaTeX cannot compile formula:
*** Error message:
Error: Nothing to show, formula is empty
Java
// C++ Program to find the biggest cone
// that can be inscribed within a sphere
#include
using namespace std;
// Function to find the radius of the cone
float coner(float R)
{
// radius cannot be negative
if (R < 0)
return -1;
// radius of the cone
float r = (2 * sqrt(2) * R) / 3;
return r;
}
// Function to find the height of the cone
float coneh(float R)
{
// side cannot be negative
if (R < 0)
return -1;
// height of the cone
float h = (4 * R) / 3;
return h;
}
// Driver code
int main()
{
float R = 10;
cout << "r = " << coner(R) << ", "
<< "h = " << coneh(R) << endl;
return 0;
}
Python3
// Java Program to find the biggest cone
// that can be inscribed within a sphere
import java.util.*;
import java.lang.*;
class GFG
{
// Function to find the radius
// of the cone
static float coner(float R)
{
// radius cannot be negative
if (R < 0)
return -1;
// radius of the cone
float r = (float)(2 *
Math.sqrt(2) * R) / 3;
return r;
}
// Function to find the
// height of the cone
static float coneh(float R)
{
// side cannot be negative
if (R < 0)
return -1;
// height of the cone
float h = (4 * R) / 3;
return h;
}
// Driver code
public static void main(String args[])
{
float R = 10;
System.out.println("r = " + coner(R) +
", " + "h = " + coneh(R));
}
}
// This code is contributed
// by Akanksha Rai
C#
# Python 3 Program to find the biggest cone
# that can be inscribed within a sphere
import math
# Function to find the radius
# of the cone
def coner(R):
# radius cannot be negative
if (R < 0):
return -1;
# radius of the cone
r = (2 * math.sqrt(2) * R) / 3
return float(r)
# Function to find the height
# of the cone
def coneh(R):
# side cannot be negative
if (R < 0):
return -1;
# height of the cone
h = (4 * R) / 3
return float(h)
# Driver code
R = 10
print("r = " , coner(R) ,
", ", "h = " , coneh(R))
# This code is contributed
# by 29AjayKumar
PHP
// C# Program to find the biggest cone
// that can be inscribed within a sphere
using System;
class GFG
{
// Function to find the radius
// of the cone
static float coner(float R)
{
// radius cannot be negative
if (R < 0)
return -1;
// radius of the cone
float r = (float)(2 *
Math.Sqrt(2) * R) / 3;
return r;
}
// Function to find the
// height of the cone
static float coneh(float R)
{
// side cannot be negative
if (R < 0)
return -1;
// height of the cone
float h = (4 * R) / 3;
return h;
}
// Driver code
public static void Main()
{
float R = 10;
Console.WriteLine("r = " + coner(R) +
", " + "h = " + coneh(R));
}
}
// This code is contributed
// by Akanksha Rai
Javascript
输出: