我不知道什么牟合方盖,但是我学过高数.
这不是一道几何题,应该是一道高数微积分题目,考研的有兴趣可以做一做。
所以,最后的程序就容易写出来了
#include <iostream>
#include <cstdio>
#include <cmath>
const double PI=acos(-1);
using namespace std;
int main()
{
//freopen("input.txt","r",stdin);
double r,h;
while(~scanf("%lf%lf",&r,&h))
{
double v1=2*PI*r*r*h;
if(h>2*r)
{
double v=v1-8.0*2.0/3.0*r*r*r;
printf("%.4lf\n",v);
}
else
{
double H=h/2.0;
double l=sqrt(r*r-H*H);
double v2=l*H*H;
double v3=2.0/3.0*r*r*r-l*r*r+l*l*l/3.0;
double v=v1-8.0*(v3+v2);
printf("%.4lf\n",v);
}
}
return 0;
}