题目链接:点击打开链接
代码:
#include<stdio.h>
#include<algorithm>
using namespace std;
#include<math.h>
#include<bits/stdc++.h>
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
double q[5];
double l;
scanf("%lf%lf%lf%lf",&q[0],&q[1],&q[2],&l);
double q1;
q1=l;
sort(q,q+3);
while(1)
{
if(q[0]<q[1])
{
q1-=(q[1]-q[0]);
q[0]+=(l>=(q[1]-q[0]))?q[1]-q[0]:l;
l=q1;
}
// printf("%.2lf %.2lf %.2lf %.2lf\n",q[0],q[1],q[2],l);
if(l<=0.0)
break;
if(q[1]<q[2])
{
if(l>=2.0*(q[2]-q[1]))
{
l-=2*(q[2]-q[1]);
q[0]+=q[2]-q[1];
q[1]+=q[2]-q[1];
}
else
{
q[0]+=l/2.0;
q[1]+=l/2.0;
l=0;
break;
}
if(l<=0.0)
break;
}
q[0]+=l/3.0;
q[1]+=l/3.0;
q[2]+=l/3.0;
// printf("%.2lf %.2lf %.2lf %.2lf\n",q[0],q[1],q[2],l);
break;
}
double w=(q[1]+q[0]+q[2])/2.0;
double s=sqrt(w*(w-q[0])*(w-q[1])*(w-q[2]));
printf("%.10lf\n",s);
}
return 0;
}
简单思维题