#include<cstdio>
#include<cmath>
const double PI=acos(-1.0);
const double eps=1e-5;
double f(double R,doubl9e h){
double alpha=2*acos((R-h)/R);
double L=2*sqrt(R*R-(R-h)*(R-h));
double S1=alpha*R*R/2-L*(R-h)/2;
double S2=PI*R*R/2;
return S1/S2;
}
double solve(double R,double r){
double left=0,right=R,mid;
while(right-left>eps){
mid=(left+right)/2;
if(f(R,mid)>r){
right=mid;
}else{
left=mid;
}
}
return mid;
}
int main(){
double R,r;
scanf("%lf%lf",&R,&r);
printf("%.4f\n",solve(R,r));
return 0;
}
//装水问题
优化求解:基于圆的面积比例问题的算法
最新推荐文章于 2025-08-15 23:22:29 发布
这篇博客介绍了一种解决关于圆的面积比例问题的C++算法,通过迭代逼近法求解给定半径和目标比例的精确中点。代码演示了如何利用双精度运算和条件判断来实现高效计算。
2046

被折叠的 条评论
为什么被折叠?



