给你一个立方体的三条相邻的棱长总和 L ,求该立方体的体积最大为多少(棱长不一定为整数)(答案保留 12 位小数)。
说白了就是已知 a + b + c = L ,要求 a \times b \times c 的最大值,但 a 、 b 、 c 不一定是整数且它们大于 0。
由题意得:a > 0 、 b > 0 、 c > 0 ,则 ans = a \times b \times c 。由均值不等式得到 a \times b \le (a^2 + b^2) / 2 ,所以 ans \le (a^2 + b^2) \times c / 2 。因此当 ans 最大时,满足 a \times b \times c = (a^2 + b^2) \times c / 2 。因为 c > 0 ,所以 a \times b = (a^2 + b^2) / 2 ,解得 a = b。同理可得,当 ans 最大时,b = c 。所以当 ans 最大时, a = b = c = \frac{L}{3} ,即 ans_{max} = (\frac{L}{3})^3。
所以,代码就变得非常简单了:
#include <bits/stdc++.h>
using namespace std;
int main(){
double l;
scanf("%lf", &l);
printf("%.12f\n", l/3*l/3*l/3); //这里就不多解释了,记得保留12位小数
return 0;
}