题解给的数学方法太难了。
还是看看正常人怎么解这题的吧:
下面一张图就解释了做法:
由于题目对精度要求比较低,只要1位小数。
我们完全可以枚举OA,OB,OC的夹角,然后算出每一种情况的面积,最终估算出期望。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define re register
#define ls (o<<1)
#define rs (o<<1|1)
#define pb push_back
const double PI= acos(-1.0);
const int M = 500+7;
double s[M],c[M];
int main()
{
int T;
cin>>T;
double a=0,v=2*PI/500;
for(int i=0;i<500;i++,a+=v)s[i]=sin(a),c[i]=cos(a);
while(T--)
{
double r1,r2,r3;
scanf("%lf%lf%lf",&r1,&r2,&r3);
double ans=0;
//固定A点,假设OA指向x正半轴
//AB = (r2*cosa - r1,r2*sina)
//BC = (r3*cosb - r2*cosa,r3*sinb - r2*sina)
for(int i=0;i<500;i++)//枚举OA与OB夹角
for(int j=0;j<500;j++)//枚举OA与OC夹角
{
ans+=0.5*abs((r2*c[i]-r1)*(r3*s[j]-r2*s[i])-r2*s[i]*(r3*c[j]-r2*c[i]));
}
printf("%.1f\n",ans/500/500);
}
return 0;
}