Description
给出一个圆台,上底面半径
r
,下底面半径
Input
三个整数
Output
输出该圆台内部可防止的最大球的半径,误差不超过 10−6
Sample Input
3 4 8
Sample Output
3.531128874149
Solution
求出该圆台所属的圆锥的内接球半径,与圆台高度的一半取最小值即可
Code
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<set>
#include<ctime>
using namespace std;
typedef long long ll;
typedef pair<int,int>P;
const int INF=0x3f3f3f3f,maxn=100001;
const double PI=acos(-1.0);
int main()
{
double r,R,h;
while(~scanf("%lf%lf%lf",&r,&R,&h))
{
double h1=h*r/(R-r);
h+=h1;
double L=sqrt(R*R+h*h);
double x=min(h*R/(L+R),0.5*(h-h1));
printf("%.10f\n",x);
}
return 0;
}