题目链接 http://lightoj.com/volume_showproblem.php?problem=1331
题意:给出三个两两相切圆的半径,求阴影部分面积
思路:海伦公式求已三个圆心为顶点的三角形的面积,减去三个扇形的面积。
#include <stdio.h>
#include <math.h>
double Sector (double a,double b,double c)
{
double alpha=acos(((a+b)*(a+b)+(a+c)*(a+c)-(b+c)*(b+c))/(2*(a+b)*(a+c)));
return a*a*alpha/2;
}
double Triangle (double a,double b,double c)
{
double p=(a+b+c)/2;
return sqrt(p*(p-a)*(p-b)*(p-c));
}
double Deal ()
{
double r1,r2,r3;
scanf("%lf%lf%lf",&r1,&r2,&r3);
return Triangle(r1+r2,r1+r3,r2+r3)-Sector(r1,r2,r3)-Sector(r2,r1,r3)-Sector(r3,r1,r2);
}
int main ()
{
int T;
scanf("%d",&T);
for (int cas=1;cas<=T;cas++)
printf("Case %d: %.8lf\n",cas,Deal());
return 0;
}