?思路
分圆心在圆锥型斗底面的上方和下方(与再面上一起)
判断 ( R * h ) / r? 与 的大小关系即可
然后分类画图 求解
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main(){
int r,h,R;
double ans;
cin >> r >> h >> R ;
double V=acos(-1)*r*r*h/3.0 ;
double q=sqrt(r*r+h*h),h1=R*(q-r)/r;
//printf("h1=%lf\n",h1);
if (R*h/r > q) {
q = sqrt(R*R-r*r) ;
h1 = (h - R + q) ;
}
ans = V*h1*h1*h1/(h*h*h) ;
printf("%.2lf",ans);
//printf("q=%lf\nV=%lf\nh1=%lf\nans=%.2lf",q,V,h1,ans);
return 0;
}
/**************************************************************
Problem: 2291
User: 21XXXXXXXX
Language: C++
Result: 正确
Time:0 ms
Memory:2144 kb
****************************************************************/
|