📄 3244550_ce.c
字号:
#include <stdio.h>
#include <math.h>
double PAI = acos(-1.0);
double H, R, D1, h1, D2, h2, D, n;
double min(double a,double b)
{
return a < b ? a : b;
}
int main()
{
double S, h, minh1, minh2, _h1, _h2, F, G, v1, v2, v;
scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&H,&R,&D1,&h1,&D2,&h2,&D,&n);
S = PAI * R * R;
v = n * n * n;
if(D >= D1)
{
if(S * (n - h1 - h2) > v)
h = S * (h1 + h2) / (S - n * n);
else
h = (h1 + h2 + v) / S;
}
else
{
if(D <= D2)
{
minh2 = (1 - n * n / S) * D * n / D2;
if(minh2 <= h2)
h = h1 + h2 + D * v / D2 / S;
else
{
_h2 = S / (S - n * n) * h2;
_h1 = (D * n - D2 * _h2) / D1;
minh1 = (S - n * n) * _h1 / S;
if(minh1 <= h1)
h = h1 + h2 + (_h1 + _h2) * n * n / S;
else
h = S * (h1 + h2) / (S - n * n);
}
}
else
{
v1 = S * h1;
v2 = S * h2;
_h1 = v1 / (S - n * n);
_h2 = v2 / (S - n * n);
F = _h1 * n * n * D1 + _h2 * n * n * D2;
G = D * v;
if(F <= G)
{
if(n >= _h1 + _h2)
h = _h1 + _h2;
else
h = (v1 + v2 + v) / S;
}
else
{
if(n >= _h2)
{
F = _h2 * D2 * n * n + (n - _h2) * n * n * D1;
if(F <= G)
h = (v1 + v2 + v) / S;
else
h = h1 + _h2 + (G - _h2 * n * n * D2) / D1 / S;
}
else
h = (v1 + v2 + v) / S;
}
}
}
h = min(h, H);
printf("%.3lf\n",h);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -